ホームページ  >  記事  >  バックエンド開発  >  PHPヘッダ関数の使用例

PHPヘッダ関数の使用例

WBOY
WBOYオリジナル
2016-07-25 08:57:451073ブラウズ
  1. Header("Location: http://bbs.it-home.org";);
  2. exit; // エラー発生後を避けるために、各リダイレクトの後に「exit」を追加する必要があります、実行は続行されます。
  3. ?>
  4. header("refresh:3;url=http://bbs.it-home.org");
  5. print('読み込み中、お待ちください...
    3 秒~~~') の後に自動的にジャンプします
  6. ヘッダーのリダイレクトは、ユーザーのアドレス バーに URL を入力するのと同じです
コードをコピーします
例 2、IE でのページのキャッシュを禁止します

  1. header('有効期限: 1997 年 7 月 26 日月曜日 05:00:00 GMT');
  2. header('Last-Modified: '.gmdate('D, d M Y H:i: s') .' GMT');
  3. header('キャッシュ制御: ストアなし、キャッシュなし、ライド必須');
  4. header('キャッシュ制御: ポストチェック = 0、事前チェック = 0 ',false);
  5. header('Pragma: no-cache');//http1.0 および https
  6. と互換性があります?>
  7. CacheControl = no-cache
  8. Pragma=no-cache
  9. Expires = -1
コードをコピー
説明: サーバー上の Web ページが頻繁に変更される場合は、Expires を -1 に設定して、即時有効期限が切れることを示します。 Web ページが毎日午前 1 時に更新される場合、有効期限を翌日の午前 1 時に設定できます。 HTTP1.1 サーバーが CacheControl = no-cache を指定すると、ブラウザーは Web ページをキャッシュしません。 レガシー HTTP 1.0 サーバーは Cache-Control ヘッダーを使用できません。したがって、HTTP 1.0 サーバーとの下位互換性のために、IE は Pragma:no-cache ヘッダーを使用して HTTP に対する特別なサポートを提供します。 クライアントが安全な接続 (https://) 経由でサーバーと通信し、サーバーが応答で Pragma:no-cache ヘッダーを返す場合、Internet Explorer は応答をキャッシュしません。

注: Pragma:no-cache は、安全な接続で使用される場合にのみキャッシュを防止します。安全でないページで使用される場合、その処理は Expires:-1 と同じになりますが、ページはすぐに期限切れとしてマークされます。

http-equivメタタグ: http-equiv メタを使用して、HTML ページ内の指定された http メッセージ ヘッダーをマークできます。 古いバージョンの IE は HTML メタ タグをサポートしていない可能性があるため、http メッセージ ヘッダーを使用してキャッシュを無効にすることをお勧めします。

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

オンライン情報によると、PHP の関数 header() はブラウザに Status ヘッダーを送信できます。 例:

  1. header("Status: 404 Not Found")
コードをコピー
。 実際、ブラウザーから返される応答は次のとおりです。

  1. header("http/1.1 404 Not Found");
コードをコピー
最初の部分は HTTP プロトコルのバージョン (HTTP バージョン) です。 2 番目の部分はステータス コード (Status) です。 3番目の部分はReason-Phraseです。

例 4、ユーザーにファイルのダウンロードを許可する (ファイルの隠し場所) htmlタグを使用すると、通常のファイルをダウンロードできます。 ファイルの機密性を保ち、ファイルのリンクを他の人に知らせたくない場合は、ヘッダー関数を使用してファイルをダウンロードできます。

  1. header(“Content-type: application/x-gzip”);
  2. header(“Content-Disposition:attachment; filename=ファイル名”);
  3. header(“Content-Description : PHP3 生成データ”);
  4. ?>
コードをコピー
例 5、ヘッダー関数の前にコンテンツを入力します 一般に、HTML コンテンツはヘッダー関数の前に出力できません。同様に、setcookie() 関数やセッション関数も出力ストリームにメッセージ ヘッダー情報を追加する必要があります。

header() が実行される前に echo ステートメントがある場合、後で header() が発生すると、「警告: ヘッダー情報を変更できません – ヘッダーは既に送信されています…」エラーが報告されます。 これらの関数の前にテキスト、空白行、復帰などを含めることはできません。header() 関数の後に exit() 関数を追加するのが最善です。

たとえば、次の間違った記述では、2 つの PHP コード スニペットの間に空白行があります。

  1. //ここにコードがあります
  2. ?>
  3. //これは空白行である必要があります
  4. header("http/1.1 403 Forbidden");
  5. exit();
  6. ?>
コードをコピー

原因分析: PHP スクリプトの実行が開始されると、http メッセージのヘッダー (タイトル) 情報と本文情報を同時に送信できます。 http メッセージ ヘッダー (header() または SetCookie() 関数から) はすぐには送信されず、リストに保存されます。

このようにして、デフォルトのタイトル(Content-Type タイトルなど)を含むタイトル情報を変更できます。

ただし、スクリプトがヘッダー以外の出力を送信すると (たとえば、HTML または print() 呼び出しを使用して)、PHP は最初にすべてのヘッダーを送信してから、HTTP ヘッダーを終了する必要があります。 その後、メイン データの送信を続行すると、ヘッダー情報を追加または変更する試みは許可されなくなり、上記のエラー メッセージのいずれかが送信されます。

解決策: php.ini を変更してキャッシュ (output_buffering) をオンにするか、プログラム内でキャッシュ関数 ob_start()、ob_end_flush() などを使用します。

原理分析: Output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。

代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ利用可能)。

ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりできます。 すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。

PHP ヘッダー関数の他の例をいくつか添付します。

  1. // ok
  2. header('HTTP/1.1 200 OK');
  3. //404 ヘッダーを設定します:
  4. header('HTTP/1.1 404 Not Found');永続的にリダイレクトされるアドレスを設定します
  5. header('HTTP/1.1 301 Moved Permanently')
  6. //新しいアドレスに移動します
  7. header('Location: http://bbs.it-home.org/'); //ファイル遅延リダイレクト:
  8. header('Refresh: 10; url=http://bbs.it-home.org/');
  9. print '10 秒後にリダイレクトされます'; HTML 構文を使用して
  10. // // X-Powered-By をオーバーライドすることもできます。 PHP:
  11. header('X-Powered-By: PHP/4.4.0');
  12. header('X-Powered-By: Brain/0.6b');
  13. //ドキュメント言語
  14. header('コンテンツ言語: en') ;
  15. //最終変更時刻をブラウザに通知します
  16. $time = time() – 60 // または filemtime($fn), etc
  17. header('Last-Modified: '.gmdate('D, d; M Y H:i :s', $time).' GMT');
  18. //ドキュメントのコンテンツが変更されていないことをブラウザに通知します
  19. header('HTTP/1.1 304 Not Modified'); コンテンツの長さを設定します
  20. header('Content-Length : 1234');
  21. //ダウンロードタイプとして設定
  22. header('Content-Type: application/octet-stream');
  23. header('Content-Disposition:attachment; filename="example. zip"');
  24. header('Content-Transfer-Encoding: binary');
  25. // 送信するファイルをロードします:
  26. readfile('example.zip');
  27. // 現在のドキュメントのキャッシュを無効にします
  28. header( 'Cache-Control: no-cache、no-store、max-age=0、must-ridate');
  29. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // の日付past
  30. header('Pragma: no-cache');
  31. //コンテンツ タイプを設定します:
  32. header('Content-Type: text/html; charset=iso-8859-1'); text/html; charset=utf -8′);
  33. header('Content-Type: text/plain') //プレーンテキスト形式
  34. header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); // ZIP ファイル
  35. header('Content-Type: application/pdf') // PDF ファイル
  36. header('Content-Type: audio/mpeg'); / 音声ファイル
  37. header(' Content-Type: application/x-shockwave-flash'); //Flashアニメーション
  38. //ログインダイアログを表示
  39. header('HTTP/1.1 401 Unauthorized');
  40. header('WWW-認証: Basic realm=”Top Secret"');
  41. print 'ユーザーがキャンセルを押すか、';
  42. print '間違ったログインデータを入力した場合に表示されるテキスト';
  43. ?>
  44. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。