ホームページ  >  記事  >  php教程  >  関数ヘッダー - ページジャンプ

関数ヘッダー - ページジャンプ

高洛峰
高洛峰オリジナル
2016-12-20 10:26:231474ブラウズ

関数ヘッダー関数:
ページジャンプ

http ヘッダー情報
ヘッダー情報には多くの機能がありますが、最も重要なものは次のとおりです:
1. ジャンプ
ブラウザーがヘッダー情報の Location: xxxx を受け取ると、自動的にジャンプします。 xxxx が指す URL アドレスにこれは、js でジャンプを記述するのと似ています。ただし、このジャンプはブラウザのみが認識しており、コンテンツに何かがあるかどうかに関係なく、ユーザーはそれを見ることができません。
例: header("Location: http://www.example.com/");

2. Web ページのコンテンツを指定します
ヘッダー情報が次のように指定されている場合は、同じ XML ファイル: Content-type: application/ xml、ブラウザは XML ファイル形式に従ってそれを解析します。ただし、ヘッダー情報が Content-type: text/xml の場合、ブラウザーは保存されたテキストとして解析します。 (ブラウザは拡張子に従ってファイルを解析しません)
例: header('Content-type: application/pdf');

3. 添付ファイル
いくつかの Web サイトからダウンロードすることがあることに気づいたかどうかはわかりませんが、ダウンロードをクリック 接続後、ブラウザで添付ファイルを Web ページとして開くと、表示される文字がすべて文字化けしてしまいました。この問題はヘッダー情報にも関係しています。ブラウザは Content-type に基づいて開くか保存するかを決定するため、場合によっては誤った判断をしてしまうことがあります (主に Web サイト設計者が Content-type を書き忘れることが原因です)。実際、コンテンツが添付ファイルであり、保存する必要があることを指定する別の方法があります。これは、 Content-Disposition:attachment; filename="
例: header('Content-Disposition:attachment; filename=)
改良リクエスト
4×× クライアント エラー
5×× サーバー エラー

構文:
header(string,replace,http_response_code)
パラメータ
文字列: 必須。送信するヘッダー文字列を指定します。
交換: オプション。このヘッダーが前のヘッダーを置き換えるか、2 番目のヘッダーを追加するかを示します。デフォルトは true (置換) です。 false (同じタイプの複数のヘッダーを許可します)。
http_response_code: オプション。 HTTP 応答コードを指定された値に強制します。 (PHP 4 以降で利用可能)

例 1:
Web ページをリダイレクトする
header("Location: http://www.example.com/");
exit;
?>

例 2:
Forceユーザーは、クライアント側のキャッシュを使用するのではなく、このページにアクセスするたびに最新のデータを取得できます。
// すでに過ぎた日付である限り、このページの有効期限 (グリニッジ標準時で表現) をブラウザーに伝えます。
header("Expires:Mon,26 Jul 1970 05:00:00 GMT");

// このページの最終更新日 (グリニッジ標準時で表現) をブラウザに通知します。これは目的と同じ日です。ブラウザに最新情報を強制的に取得します
header("Last-Modified:".gmdate("D,i:s")."GMT");制御: キャッシュなし、再検証が必要");

//パラメータ (以前のサーバーと互換性があります)、つまり HTTP1.0 プロトコルと互換性があります
header("Pragma: no-cache");

例 3:
ステータス値をブラウザに出力します、主にアクセス制御に使用されます
header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized'); 以下に示すように、ユーザーのページへのアクセスを制限するには、ステータスを 404 に設定します。ブラウザにページが存在しないと表示されるようにします
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found") // この記述は間違っています
?>

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

header("Content-type: audio/mpeg");
header("Content-Disposition:attachment; filename=filenale");
header("Content-Description: PHP3 Generated Data");

例 6:
ヘッダー関数の前にコンテンツを入力する

一般に、ヘッダー関数の前に HTML コンテンツを出力することはできません。同様に、setcookie() 関数やセッション関数も、出力ストリームにメッセージ ヘッダー情報を追加する必要があります。 header() が実行される前に echo などのステートメントがある場合、後で header() が発生したときに、「警告: ヘッダー情報を変更できません - ヘッダーは既に .... によって送信されました。」エラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを含めることはできません。exit() 関数を header() 関数の後に追加するのが最善です。たとえば、次の間違った記述では、2 つの PHP コード スニペットの間に空白行があります:

//some code here
?>
//There should be ablank line here
header("http/1.1 403 Forbidden") ;
exit();
?>
理由:
PHP スクリプトの実行が開始されると、http メッセージ ヘッダー (タイトル) 情報と本文情報を同時に送信できます。 http メッセージ ヘッダー (from 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 中国語 Web サイトの関連記事にご注意ください。

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