gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:33:00 24 4
gpt4 key购买 nike

我需要替换 php 的 html 输出中的所有非 ssl 引用。通过对输出缓冲区中的内容执行 str_replace 并将其刷新出来是一种好习惯吗?实际上在 php 代码中有很多 include 和 require,所以通过找到每个引用的位置来完成它真的很乏味。有什么硬性快速的方法可以解决这个问题吗?这是我在做什么的粗略想法

<?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 输出缓冲区中的内容将 php 页面中的所有非 ssl 引用转换为 ssl 是一个好习惯吗? -->

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

我有三个建议:

  1. 输出正确的链接。如果可能,请输出正确的链接(http 或 https),这样您就不需要替换它们。您可以通过使用一个常量或一个返回应该使用 http 还是 https 的函数来做到这一点。
  2. 使用 preg_replace 这样您就只会替换某些标签中的文本,例如 <a> <link> <img> <script> .
  3. 依靠服务器重定向。您可以将服务器设置为将所有 http 流量重定向到 https,这样您就不必担心更改链接。当他们访问 http 链接时,他们将被转发到 https 链接。您可以将以下内容放入您的 .htaccess 文件中:

.htaccess 文件:

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

关于php - 通过 str_replacing 输出缓冲区中的内容将 php 页面中的所有非 ssl 引用转换为 ssl 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com