PHPプログラミングでは、 Header()関数が機能しない状況に遭遇することがよくあります。ヘッダー()関数は通常、ページのコンテンツタイプの設定やユーザーのリダイレクトなど、スクリプト出力の前に生のHTTPヘッダーを送信するために使用されます。ただし、多くの開発者は、 header()を使用すると突然の失敗に遭遇する可能性があり、混乱が発生します。では、なぜHeader()機能が突然失敗するのですか?この隠された問題(バイトオーダーマーキング)を無視している可能性が非常に高いです。
BOM(バイトオーダーマーク)は、テキストファイルのバイト順序を示すUnicodeエンコードの特別なマーカーです。通常、ファイルの先頭に目に見えない文字が含まれています。 BOMヘッダーは通常のテキストファイルの読み取りには影響しませんが、PHPのヘッダー()関数に大きな影響を与えます。
PHPでは、出力の前にヘッダー()関数を呼び出す必要があります。言い換えれば、 Header() (HTMLタグ、スペース、ラインブレークなどを含む)を呼び出した後、出力はありません。 BOMヘッダーは実際にはファイルの開始の一部であり、ファイルの前面に見えないバイトを追加します。 PHPファイルがUTF-8エンコードされており、BOMヘッダーが含まれている場合、これらの目に見えない文字は、PHP出力の前にブラウザに送信されます。
BOMヘッダーを確認してください<br> テキストエディター(メモ帳++や崇高なテキストなど)を使用して、PHPファイルを開いてBOMヘッダーが存在するかどうかを確認できます。ファイルがUTF-8エンコードされており、BOMヘッダーが含まれている場合、テキストエディターには関連するロゴがあります。
BOMヘッダーを取り外します<br> ファイルにBOMヘッダーが含まれていることがわかった場合は、次の方法で削除できます。
NotePad ++では、ファイルを開いた後、 [エンコード]メニューをクリックし、 BOMなしでUTF-8を選択します。
Sublime Textでは、 Encodingオプションを使用してSaveを使用してUTF-8形式(BOMなし)として保存します。
php <br>に対処する方法 ファイルのエンコードを直接変更できない場合、または編集ツールがサポートされていない場合は、PHPの次のコードを使用してBOMヘッダーをクリアすることもできます。
<?php
// このコードをファイルの上部に追加します
if (substr(utf8_decode(file_get_contents('yourfile.php')), 0, 3) == "\xEF\xBB\xBF") {
file_put_contents('yourfile.php', substr(file_get_contents('yourfile.php'), 3));
}
?>
これにより、ファイルにBOMヘッダーがあるかどうかを確認し、ファイルがロードされたときに削除できます。
エラーPHPコード:
<?php
// BOM 頭が引き起こします header() 無効
header("Location: https://m66.net");
exit;
?>
このPHPファイルにBOMヘッダーが含まれている場合、 Header()関数は適切に機能しないため、ブラウザはすでに開始されている応答を受け取り、リダイレクトが不可能になります。
解決:
BOMヘッダーを削除するか、出力の前にHeader()関数が呼び出されていることを確認してください。
<?php
// 消去 BOM 頭の後
header("Location: https://m66.net");
exit;
?>
PHPプログラムを開発する場合、 Header()関数が失敗する一般的な理由の1つは、ファイルにBOMヘッダーが含まれていることです。 BOMヘッダーは通常簡単に発見されませんが、 Header()関数に干渉します。これを回避するために、開発者は保存されたPHPファイルにBOMヘッダーが含まれていないことを確認し、ファイルをエンコードするときにBOMフリーのUTF-8エンコード形式を選択することに注意してください。
同様の問題が発生した場合、ファイルのエンコードをチェックしてBOMヘッダーがないことを確認することは、問題を解決するための効果的な方法です。