ホームページ  >  記事  >  バックエンド開発  >  PHP header() 関数の使用法 (301、404 およびその他のエラー設定)

PHP header() 関数の使用法 (301、404 およびその他のエラー設定)

WBOY
WBOYオリジナル
2016-07-25 08:57:381257ブラウズ
  1. Header("HTTP/1.1 404 Not Found");
コードをコピー

Apache 設定の ErrorDocument 404 /404.php 関数については、 nginxの設定

  1. error_page 404 /404.php;
コードをコピー

して、次のように変更します

  1. error_page 404 = /404.php;
コードをコピー

phpヘッダー301

  1. header("HTTP/1.1 301 Moved Permanently");
  2. header ("Location:$url")
  3. ?>
コードをコピーしてください
多くのページにヘッダーがある場合、最後のページが条件付きで実行されます。たとえば、次のようになります。

    header('場所:http://bbs.it-home.org');
  1. header('場所:http://www.g.cn'); ://www.baidu.com');
  2. コードをコピー
これは Baidu にジャンプします

header('場所:http://bbs.it-home.org');echo 'プログラマのホーム
header('場所:http://www.g.cn'); ('場所:http://www.baidu.com');
  1. コードをコピーしてください
これはGoogleにジャンプします header関数の詳しい使い方 1.機能: PHP は、HTTP プロトコルを使用して HTML ドキュメントのヘッダーをブラウザーに送信し、送信されるコンテンツについてはブラウザーに指示するだけであり、HTTP プロトコルに精通している必要があり、PHP とは何の関係もありません。 従来のヘッダーには、次の 3 つのヘッダーのいずれかを含める必要があり、出現できるのは 1 回だけです。

<1> これは最も一般的な
Header("Location: http://bbs.it-home.org/");
    コードをコピー
  1. ユーザーがこのページにアクセスするたびに、クライアント側のキャッシュを使用する代わりに最新情報を取得するように強制します。
//過ぎた日付である限り、このページの有効期限 (グリニッジ標準時で表現) をブラウザーに伝えます。 <2>header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");

//このページの最終更新日 (グリニッジ標準時で表現) をブラウザに通知します。目的は次のとおりです。ブラウザに最新情報を強制的に取得させるため
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
// クライアント ブラウザにキャッシュを使用しないように指示します
    header ("Cache-Control: no-cache, must-revalidate");
  1. //パラメータ (以前のサーバーと互換性があります)、つまり HTTP1.0 プロトコルと互換性があります
  2. header("Pragma: no-cache"); /出力 MIME タイプ
  3. header(" Content-type: application/file");
  4. //ファイルの長さ
  5. header("Content-Length: 227685");
  6. //受け入れられる範囲単位
  7. header("Accept-Ranges: bytes ");
  8. //ファイル保存ダイアログボックスに時間節約ファイル名がありません
  9. header("Content-Disposition:attachment; filename=$filename");
  10. ?>
  11. コードをコピー
  12. 出力ステータスブラウザへの値、主に使用されるアクセス制御
header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');

<3>

コードをコピー
    ユーザー ページにアクセスできない場合は、以下に示すようにステータスを 404 に設定すると、ページが存在しないことがブラウザに表示されます。
  1. header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
コードをコピー

注:ヘッダーには次の 3 つのヘッダーのいずれかを含める必要があり、出現できるのは 1 回だけです。 Content-Type: xxxx/yyyy Location: xxxx:yyyy/zzzz Status: nnn xxxxxx は、新しいマルチパート ヘッダー仕様 (Multipart MIME) で 2 回以上出現する可能性があります。
    使用例 例 1: この例では、ブラウザを PHP の公式 Web サイトにリダイレクトします。
Header("場所: http://bbs.it-home.org/"); exit;
コードをコピー

例 2: プロキシまたはキャッシュ内のデータではなく、ユーザーが毎回最新のデータを取得できるようにする場合は、次のヘッダーを使用できます。

  1. header("有効期限: 1997 年 7 月 26 日月曜日 05:00:00 GMT");
  2. header("Last-Modified: " .gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate");
  3. header("Pragma: no-cache");
コードをコピー

例 3: ユーザーのブラウザにメッセージを表示させますファイルが見つからないというメッセージが表示されます。

  1. header("Status: 404 Not Found");
コードをコピー

例 4: ユーザーにファイルをダウンロードさせます。

  1. header("Content-type: application/x-gzip");
  2. header("Content-Disposition:attachment; filename=filename");
  3. header("Content-Description: PHP3 Generated Data" ) ;
コードをコピー
header -- 生の HTTP ヘッダーの説明を送信します void header ( string string [, bool replace [, int http_response_code]] )

header() 関数は、生の HTTP ヘッダーを送信するために使用されます。 HTTP ヘッダーの詳細については、HTTP/1.1 仕様を参照してください。 オプションのパラメータ replace は、前の同様のヘッダーを置き換えるか、同じタイプのヘッダーを追加するかを指定します。デフォルトは置換ですが、これを FALSE に設定すると、同じタイプの複数のヘッダーが強制的に送信されるようになります。例えば:

    header('WWW-Authenticate: Negotiate');
  1. header('WWW-Authenticate: NTLM', false);
  2. コードをコピーします
2番目オプションのパラメータ http_response_code は、HTTP 応答コードを指定された値に強制します (このパラメータは PHP 4.3.0 の新機能です)。
2 つの特別なヘッダー呼び出しがあります。 1 つ目は文字列「HTTP/」 (大文字と小文字は重要ではありません) で始まるヘッダーで、送信する HTTP ステータス コードを決定するために使用できます。 たとえば、PHP を使用してファイルが見つからない場合のエラー処理リクエストを処理するように Apache を構成する場合 (ErrorDocument ディレクティブを使用)、スクリプトが正しいステータス コードを生成することを確認する必要があります。

header("HTTP/1.0 404 Not Found")
  • ?>
  • コードをコピー注: HTTP ステータス コードのヘッダー行は常にクライアントに送信される最初の行です。実際の header() 呼び出しが最初のものであるかどうかには関係ありません。 HTTP ヘッダーがすでに送信されていない限り、新しいステータス行で header() 関数を呼び出すことで、いつでも上書きできます。 HTTPステータス検出(HTTPヘッダー):

    2 番目の特殊なケースは、「Location:」ヘッダーです。このヘッダーをブラウザに送り返すだけでなく、以前に 3xx ステータス コードが発行されていない限り、REDIRECT (302) ステータス コードもブラウザに返します。

    header("Location: http://www.example.com/"); /* ブラウザをリダイレクト*/
  • /* リダイレクト後、後続のコードが実行されないことを確認します * /
  • Exit;
  • ?>
  • コードをコピー
  • 注: HTTP/1.1 標準では Location: パラメーターとして絶対アドレス URI が必要ですが、一部のクライアントは相対 URI をサポートしています。通常、$_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF']、および dirname() 関数を使用して、相対 URI から絶対 URI を自分で生成できます。

    header("場所: http://%22.$_server['http_host'/]
  • .rtrim(dirname($_SERVER['PHP_SELF']), '/\' )
  • ."/".$relative_url);
  • ?>
  • コードをコピー
  • 注: session.use_trans_sid が有効になっている場合でも、セッション ID は Location ヘッダー情報とともに渡されません。 SID 定数として手動で渡す必要があります。 ​ PHP スクリプトは、多くの場合、ブラウザーやプロキシ サーバーによってキャッシュされてはいけない動的コンテンツを生成します。多くのプロキシ サーバーとブラウザでは、次の方法でキャッシュを無効にできます。 注: 上記のコードをすべて出力しなくても、Web ページがバッファリングされていないことがわかるかもしれません。ブラウザのデフォルトのキャッシュ動作を変更するためにユーザーが設定できるオプションは多数あります。上記のヘッダーを送信することで、スクリプト ページがキャッシュされる可能性のある設定をオーバーライドできるようになります。 ​ さらに、セッションが使用されている場合は、session_cache_limiter() 関数と session.cache_limiter オプションを使用して、正しいキャッシュ関連ヘッダーを自動的に生成できます。 ​ header() は、通常の HTML マークアップ、空白行、PHP のいずれからのものであっても、実際の出力の前に呼び出す必要があることに注意してください。よくある間違いは、include()、require()、またはその他のファイル アクセス関数を通じてコードを読み取るときに、header() を呼び出す前にスペースまたは空行が送信されることです。このエラーは、単一の PHP/HTML ファイルでもよく発生します。

    1. header("Cache-Control: no-cache,must-revalidate"); // HTTP/1.1
    2. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT) "); // 過去の時間
    3. ?>
    Copy code

    1. /* header() を呼び出す前に出力されているためエラーになります
    2. * Got something*/
    3. header('Location: http://www.example.com/');
    4. ?>
    コードをコピー

    注: PHP 4 以降、これはいくつかの出力バッファリング関数によって解決できます。問題。その代償として、ブラウザへのすべての出力は、送信コマンドが発行されるまでサーバー上にキャッシュされます。この機能を実現するには、コード内で ob_start() および ob_end_flush() を使用するか、php.ini の Output_buffering 構成オプションを変更するか、サーバー構成ファイルを変更します。

    header() の 2 つの一般的な使用法を添付します。

    1. //ページのエンコーディングを設定します:
    2. header('Content-Type: text/html;charset=gb2312');
    3. //ページを調整します:
    4. header('location:http://www.百度.com');
    コードをコピー


    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。