phpヘッダー関数の使い方を詳しく解説(2)

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

例 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. と互換性があります?>
コードをコピー

CacheControl = no-cache プラグマ=キャッシュなし 有効期限 = -1 サーバー上の Web ページが頻繁に変更される場合は、有効期限を -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 ヘッダーをブラウザに送信できます。 例: header("ステータス: 404 見つかりません")。 ただし、ブラウザーから返される実際の応答は次のとおりです。

  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() が発生したときに、「警告: ヘッダー情報を変更できません – ヘッダーは既に送信されています…」というエラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを含めることはできません。exit() 関数を header() 関数の後に追加するのが最善です。 たとえば、次の誤った記述では、2 つの PHP コード スニペットの間に空白行があります。

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

理由: PHP スクリプトの実行が開始されると、http メッセージ ヘッダー (タイトル) 情報と本文情報を同時に送信できます。http メッセージ ヘッダー (header() または SetCookie() 関数から) はすぐには送信されません。これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます (たとえば、HTML または print() を使用して)。 call)、次に PHP 最初にすべてのヘッダーを送信し、次に HTTP ヘッダーを終了し、その後、ヘッダー情報を追加または変更する試みは許可されません。エラーメッセージが送信されます。

解決策: php.ini を変更してキャッシュ (output_buffering) をオンにするか、プログラム内でキャッシュ関数 ob_start()、ob_end_flush() などを使用します。原則として、output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート