ホームページ >バックエンド開発 >PHPチュートリアル >ヘッダーの場所のリダイレクト ステートメントが page_PHP チュートリアルにジャンプできない
関数ヘッダー関数:
ページジャンプ
httpヘッダー情報
ヘッダー情報には多くの機能がありますが、最も重要なものは次のとおりです:
1.ジャンプ
ブラウザーは、ヘッダー情報で Location: xxxx を受け取ると、xxxx が指す URL に自動的にジャンプします。これは、js でジャンプを記述するのと似ています。ただし、このジャンプはブラウザのみが認識しており、コンテンツに何かがあるかどうかに関係なく、ユーザーはそれを見ることができません。
例: header("場所: http://www.bkjia.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: filename="xxxxx"
です。
例: header('Content-Disposition:attachment; filename="downloaded.pdf"');
// ファイルを開いて出力します
readfile('original.pdf');
HTTPプロトコルステータスコード
1×× 予約済み
2×× リクエストが正常に受信されたことを示します
3×× リクエストを完了するには、顧客はリクエストをさらに絞り込む必要があります
4×× お客様のエラー
5×× サーバーエラー
文法:
ヘッダー(文字列,置換,http_response_code)
パラメータ
文字列: 必須。送信するヘッダー文字列を指定します。
置換: オプション。このヘッダーが前のヘッダーを置き換えるか、2 番目のヘッダーを追加するかを示します。デフォルトは true (置換) です。 false (同じタイプの複数のヘッダーを許可します)。
http_response_code: オプション。 HTTP 応答コードを指定された値に強制します。 (PHP 4 以降で利用可能)
例 1:
ウェブページをリダイレクトします
header("場所: http://www.example.com/");
終了;
?>
例 2:
ユーザーがこのページにアクセスするたびに、クライアントのキャッシュを使用するのではなく、最新情報を取得するように強制します。
// すでに過ぎた日付である限り、このページの有効期限 (グリニッジ標準時で表現) をブラウザーに伝えます。
header("有効期限: 1970 年 7 月 26 日月曜日 05:00:00 GMT");
// このページの最終更新日 (グリニッジ標準時で表現) をブラウザに通知します。これは同日です。目的は、ブラウザに最新の情報を取得させることです
header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
// クライアントのブラウザにキャッシュを使用しないように指示します
header("キャッシュ制御: キャッシュなし、再検証が必要");
// パラメーター (以前のサーバーと互換性あり)、つまり HTTP1.0 プロトコルと互換性があります
header("プラグマ: キャッシュなし");
?>
例 3:
ステータス値をブラウザに出力し、主にアクセス制御に使用されます
header('HTTP/1.1 401 Unauthorized');
header('ステータス: 401 Unauthorized');?>
例 4:
ユーザーによるこのページへのアクセスを制限するには、以下に示すようにステータスを 404 に設定すると、ブラウザーにページが存在しないことが表示されます
ヘッダー('HTTP/1.1 404 が見つかりません');
?>
例5:
隠しファイルの場所
htmlタグで通常のファイルダウンロードを実現できます。ファイルの機密性を保ち、ファイルのリンクを他の人に知らせたくない場合は、ヘッダー関数を使用してファイルをダウンロードできます。
header("コンテンツタイプ: audio/mpeg");
header("Content-Disposition:attachment;filename=filenale");
header("Content-Description: PHP3 生成データ");
例6:
ヘッダー関数の前に内容を入力してください
一般的に、HTML コンテンツは header 関数の前に出力できません。同様に、setcookie() 関数と session 関数は、出力ストリームにメッセージ ヘッダー情報を追加する必要があります。 header() が実行される前に echo などのステートメントがある場合、後で header() が発生したときに、「警告: ヘッダー情報を変更できません - ヘッダーは既に .... によって送信されました。」エラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを置くことはできず、header() 関数の後に exit() 関数を追加するのが最善です。たとえば、次の間違った記述では、2 つの PHP コード スニペットの間に空白行があります。
//ここにコードがあります
//これは空白行にする必要があります
header("http/1.1 403 禁止");
終了();
?>
理由:
PHP スクリプトの実行が開始されると、http メッセージ ヘッダー (タイトル) 情報と本文情報を同時に送信できます。http メッセージ ヘッダー (header() または SetCookie() 関数から) はすぐには送信されません。これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます (たとえば、HTML または print() を使用して)。 call)、次に PHP 最初にすべてのヘッダーを送信し、次に HTTP ヘッダーを終了してから、本文データの送信を続行する必要があります。この時点以降、ヘッダー情報を追加または変更する試みは許可されません。上記のエラーメッセージが送信されます。
解決策:
php.iniを変更してキャッシュ(output_buffering)を開き、output_buffering=0をoutput_buffering=4096に変更します
または、プログラム内でキャッシュ関数 ob_start()、ob_end_flush() などを使用します。原則として、output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。