PHPのHeader()関数は非常に一般的な関数であり、RAW HTTPヘッダー情報をクライアントブラウザーに送信するために使用されます。この関数を通じて、開発者はページ応答のヘッダー情報を制御し、それによりブラウザの動作に影響します。たとえば、リダイレクトを設定したり、コンテンツタイプを変更したり、キャッシュを制御したりするために使用できます。
Header()関数の基本的な構文は次のとおりです。
header(string $header, bool $replace = true, int $response_code = 0): void
$ヘッダー:送信されるHTTPヘッダー情報。
$の置き換え:同じタイプの以前のヘッダー情報を置き換えるかどうかを示します。デフォルトは真であり、交換を示します。 falseの場合、新しいヘッダー情報が追加されます。
$ response_code :たとえば、HTTP応答コード、たとえば、 200は成功を意味します。
header("Content-Type: application/json"); // 応答のコンテンツタイプを設定しますJSON
header("Location: http://m66.net/redirect-page"); // 送信301ヘッダー情報をリダイレクトします
ページリダイレクト
Header()関数の最も一般的なアプリケーションの1つは、ページリダイレクトです。ロケーションヘッダーを送信することにより、ユーザーは別のURLにリダイレクトできます。例えば:
header("Location: http://m66.net/newpage"); // ユーザーを新しいページにリダイレクトします
exit(); // スクリプトが実行を停止していることを確認してください,コンテンツの出力を継続しないでください
この例では、ページにアクセスするとき、ブラウザはhttp://m66.net/newpageに向けられます。
コンテンツタイプを設定<br> Header()関数を使用して、応答のコンテンツタイプを設定できます。たとえば、JSONデータをフロントエンドに返したい場合は、コンテンツタイプのヘッダー情報をApplication/JSONに設定できます。
header("Content-Type: application/json");
echo json_encode(["message" => "Hello, world!"]);
これにより、返されたデータがHTMLまたは他のタイプではなくJSON形式であることがブラウザに示されます。
コントロールキャッシュ<br> Header()関数を使用して、ブラウザが特定のページコンテンツをキャッシュするかどうかを制御できます。たとえば、ページキャッシュを無効にします:
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
これにより、ブラウザはキャッシュされたコンテンツを使用せずに毎回ページを再クエストするようになります。
404エラーページを送信<br> ページが見つからない場合は、HTTPステータスコードを404に設定することにより、これが「見つからない」エラーであることをブラウザに通知できます。
header("HTTP/1.1 404 Not Found");
echo "Page not found";
これにより、ブラウザは404エラーを正しく処理し、エラーページを表示できます。
特定のファイルに直接アクセスしないでください<br> ユーザーが特定の機密ファイル(構成ファイルなど)に直接アクセスできないようにする場合は、 Header()関数を介してアクセスソースを確認し、ユーザーをリダイレクトできます。例えば:
if ($_SERVER['HTTP_REFERER'] !== 'http://m66.net/safe-zone') {
header("Location: http://m66.net/access-denied");
exit();
}
出力の前に呼び出される必要があります
ページ上の出力コンテンツの前に、ヘッダー()関数を呼び出す必要があります。ページにHTMLまたはその他のコンテンツが出力されている場合、「ヘッダー情報が送信された」というエラーが発生します。このエラーを回避するには、PHPコードの先頭にheader()を呼び出し、出力(スペースやラインブレークを含む)がないことを確認することをお勧めします。
// 誤った使用方法:
echo "Hello, World!";
header("Location: http://m66.net/newpage"); // エラーが報告されます
// それを使用する正しい方法:
header("Location: http://m66.net/newpage"); // 出力の前にある必要があります
exit();
exit()<br>を使用してスクリプトを終了します リダイレクトを送信した後、 exit()関数は通常、スクリプト実行を停止して、後続のコードからの予期しない出力を回避します。
header("Location: http://m66.net/newpage");
exit();
デバッグ中にヘッダー出力を確認してください<br> 「ヘッダー情報が送信された」エラーが発生した場合、PHPの出力バッファーを有効にするか、 headers_sent()関数を使用してデバッグできます。
if (headers_sent($file, $line)) {
echo "Headers already sent in $file on line $line";
}
HTTPプロトコルが正しいことを確認してください<br> Header()関数を使用する場合、合格したHTTPヘッダーがプロトコルに準拠していることを確認してください。たとえば、位置ヘッダーの後に有効なURLが続く必要があります。
Header()関数は、PHPの強力なツールです。これにより、ブラウザの動作を制御したり、応答ヘッダーを変更したり、開発中にページリダイレクトやその他の操作を実行したりできます。 Header()関数の正しい使用法を習得することは、HTTPリクエスト、応答、およびページリダイレクトを処理する際に開発者にとって非常に重要です。
基本的な使用法とアプリケーションのシナリオを理解することにより、ブラウザとサーバー間の相互作用をより適切に制御し、Webサイトのパフォーマンスとユーザーエクスペリエンスを向上させることができます。
関連タグ:
header