编程语言
首页 > 编程语言> > 通过str_replacing输出缓冲区中的内容将所有非ssl引用转换为php页面中的ssl是一个好习惯吗?

通过str_replacing输出缓冲区中的内容将所有非ssl引用转换为php页面中的ssl是一个好习惯吗?

作者:互联网

我需要替换php的html输出中的所有非ssl引用.通过对输出缓冲区中的内容执行str_replace并将其刷新来实现它是一个好习惯吗?实际上在php代码中有很多包含和要求,所以通过找到每个引用的位置来实现它是非常繁琐的.是否有任何艰难而快速的方法来解决这个问题?这是我正在做的一个粗略的想法

<?php 
ob_start();

// does the logic to generate output html.

$mixedHtml = ob_end_clean();
ob_start();
$finalHtml = str_replace('http:','https:',$mixedHtml);
echo $finalHtml;
ob_end_flush();

解决方法:

通过str_replacing输出缓冲区中的内容将所有非ssl引用转换为php页面中的ssl是一个好习惯吗? – &GT没有.

这是因为您的网页可能实际上需要提供包含“http://”的内容,而且它们不一定是链接.我只是说有时候你需要输出那些并且由于str_replace(),你的页面将无法输出它.

我有三个建议:

>输出正确的链接.如果可能,输出正确的链接(http或https),因此您无需替换它们.您可以通过使用常量或函数来返回是否应使用http或https.
>使用preg_replace,这样您就只能替换某些标签中的文字,例如< a> &LT LINK&GT &LT IMG&GT &LT脚本取代.
>依靠服务器重定向.您可以将服务器设置为将所有http流量重定向到https,这样您就不必担心更改链接.当他们访问http链接时,他们将被转发到https链接.您可以将以下内容放在.htaccess文件中:

.htaccess文件:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

标签:php,ssl,output-buffering
来源: https://codeday.me/bug/20190704/1374145.html