4

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();
4

1 に答える 1

2

出力バッファのコンテンツをstr_replaceすることにより、phpページですべての非ssl参照をsslに変換することは良い習慣ですか? -->いいえ

これは、ページが実際に「http://」を含むコンテンツを提供する必要があり、それらが必ずしもリンクであるとは限らないためです。str_replace() が原因で、それらを出力する必要がある時が来るかもしれないと言っているだけです。あなたのページはそれを出力できません。

3 つの提案があります。

  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}
于 2012-09-15T15:44:28.170 に答える