ホームページ >バックエンド開発 >PHPチュートリアル >phpのheader関数の使用例を詳しく解説
2、
例 2: IE でページ キャッシュを無効にする 視聴者がプロキシやキャッシュ内のデータではなく、常に最新のコンテンツを取得できるようにするには、次のようにします。
CacheControl = no-cache Pragma=no-cache 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 ヘッダーを送信できることが記載されています。 header("ステータス: 404 Not Found") など。ただし、ブラウザーから返される実際の応答は次のとおりです。
最初の部分は HTTP プロトコルのバージョン (HTTP-Version) で、2 番目の部分はステータス コード (Status) です。 ); 3 番目の部分は理由フレーズです。 例 4: ユーザーにファイルのダウンロードを許可する (隠しファイルの場所) htmlタグを使用すると、通常のファイルをダウンロードできます。ファイルの機密性を保ち、ファイルのリンクを他の人に知らせたくない場合は、ヘッダー関数を使用してファイルをダウンロードできます。
例 4: ヘッダー関数の前にコンテンツを入力 一般に、HTML コンテンツはヘッダー関数の前に出力できません。同様に、setcookie() 関数やセッション関数も出力ストリームにメッセージ ヘッダー情報を追加する必要があります。 header() が実行される前に echo などのステートメントがある場合、後で header() が発生したときに、「警告: ヘッダー情報を変更できません - ヘッダーは既に .... によって送信されました。」エラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを含めることはできません。exit() 関数を header() 関数の後に追加するのが最善です。たとえば、次の誤った記述では、2 つの PHP コード スニペットの間に空白行があります。
?> その理由は、PHP スクリプトが実行を開始すると、http メッセージ ヘッダー (タイトル) 情報と本文情報を同時に送信できるためです (header() または SetCookie() 関数からの)。逆に、すぐに送信されると、リストに保存されます。これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます (例: HTML を使用)。または print() 呼び出し)、PHP は最初にすべてのヘッダーを送信し、次に HTTP ヘッダーを終了する必要があり、この時点からヘッダー情報を追加または変更する試みは許可されません。エラーメッセージが 1 つ送信されます。 解決策: php.ini を変更してキャッシュ (output_buffering) をオンにするか、プログラム内でキャッシュ関数 ob_start()、ob_end_flush() などを使用します。原則として、output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。 PHP マニュアルのヘッダー関数の小さな例をいくつか紹介します。 1. heder コマンドを使用して、ブラウザーに新しいコンテンツ (キャッシュなし) を使用させます。 URL には一意の番号が追加されるため、毎回新しいコンテンツが読み取られ、キャッシュが回避されます。
IF (File_exists ($ PE_IMGPATH)) { $ iconContent = FILE_GET_CONTENTS ($ PE_IMGPATH ); "コンテンツ タイプ: image/" . $PE_imgarray["extension"]);header('Content-length: ' . strlen($iconcontent));
echo $iconcontent;
|