ホームページ  >  記事  >  バックエンド開発  >  PHP header()関数の詳しい説明(301、404、その他のエラー設定)_PHPチュートリアル

PHP header()関数の詳しい説明(301、404、その他のエラー設定)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:58:231471ブラウズ

PHP の学習を始めたばかりの場合は、学習する必要のある関数がたくさんあるかもしれません。詳細については、PHP の中国語マニュアルを参照してください。ヘッダー機能の使い方について

ページにヘッダーがいくつあっても、最後のヘッダーが実行されますが、これは条件付きです。例:

header('場所:http://www.bkjia.com');
header('場所:http://www.g.cn'); com');
これは百度にジャンプします

header('場所:http://www.bkjia.com');echo 'バンケジジア

header('場所:http://www.g.cn'); www.baidu.com');

これは Google にジャンプします
以下はヘッダー関数の使用方法の詳細な手順です
1. 機能:

~~~~~~~~~

PHP は HTTP プロトコルを使用して HTML ドキュメントのヘッダーをブラウザに送信します。ブラウザはこのページを具体的にどのように処理するのでしょうか? 送信されるコンテンツについては、PHP とは関係ありません。従来のヘッダーには次の 3 つのヘッダーのいずれかが含まれている必要があり、1 回だけ表示されます。 。

場所: xxxx:yyyy/zzzz
コンテンツ タイプ: xxxx/yyyy
ステータス: nnn xxxxxx

次に、まず HTTP プロトコルがどのように動作するかを理解しましょう

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HTTP プロトコルリクエスト/レスポンスパラダイムに基づいています。クライアントはサーバーとの接続を確立した後、サーバーにリクエストを送信します。リクエストの形式は、統一リソース識別子、プロトコルのバージョン番号の後に、リクエスト修飾子、クライアント情報、および考えられるコンテンツを含む MIME 情報が続きます。リクエストを受信した後、サーバーは対応する応答情報を返します。その形式は、情報のプロトコル バージョン番号、成功コードまたはエラー コードを含むステータス行と、それに続くサーバー情報、エンティティ情報、および考えられるコンテンツを含む MIME 情報です。
HTTPプロトコルでは、サーバーはHTTPサービスを提供する部分を指し、クライアントは使用するブラウザやダウンロードツールなどを指します。通信では、クライアントが接続要求を発行し、サーバーが接続を確立し、クライアントがHTTPリクエスト(Request)を発行し、サーバーが応答情報を返す(Respond)ことでHTTPオペレーションが完了します。


HTTP ステータス検出 (

HTTP

Header): http://www.bkjia.com/tools/http_header.php 3. HTTPプロトコルのステータスコードの意味~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1×× 予約済み 2×× リクエストが正常に受信されたことを示す

3×× リクエストを完了するには、顧客はリクエストをさらに絞り込む必要がある

4×× 顧客エラー
5×× サーバーエラー


4. 操作例:
~~~~~~~~~~~~~
<1> これが最も一般的です

Header("Location: http://www.bkjia.com/");


<2> を使用する代わりに、ユーザーに最新情報を取得させる既存のクライアント キャッシュ。

コード

//既に過ぎた日付である限り、このページの有効期限 (グリニッジ標準時で表現) をブラウザーに伝えます。
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");
//このページの最終更新日 (グリニッジ標準時で表現) をブラウザに通知します。目的は次のとおりです。ブラウザに最新情報を強制的に取得させるため
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");

// クライアント ブラウザにキャッシュを使用しないように指示します

header ("Cache-Control: no-cache, must-revalidate");
//パラメータ (以前のサーバーと互換性があります)、つまり HTTP1.0 プロトコルと互換性があります
header("Pragma: no-cache"); /出力 MIME タイプ
header(" Content-type: application/file");
//ファイルの長さ
header("Content-Length: 227685");
//受け入れられる範囲単位
header("Accept-Ranges: bytes ");
//ファイル保存ダイアログボックスに時間節約ファイル名がありません
header("Content-Disposition:attachment; filename=$filename");
?>

<3> 主にアクセス制御に使用されるステータス値をブラウザに出力します

header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');
たとえば、ユーザーによるこのページへのアクセスを制限したい場合は、以下に示すようにステータスを 404 に設定すると、ブラウザーにページが存在しないことが表示されます

header('HTTP/1.1 404 が見つかりません');

header("ステータス: 404 が見つかりません");

注: 従来のヘッダーには、次の 3 つのヘッダーのいずれかを含める必要があり、一度だけ表示できます。 Content-Type: xxxx/yyyy Location: xxxx:yyyy/zzzz Status: nnn xxxxxx は、新しいマルチパート ヘッダー仕様 (Multipart MIME) で 2 回以上出現する可能性があります。
使用例
例 1: この例では、ブラウザを PHP の公式 Web サイトにリダイレクトします。

ヘッダー("場所: http://www.bkjia.com/");

例 2: プロキシまたはキャッシュ内のデータではなく、ユーザーが毎回最新のデータを取得するようにしたい場合は、次のヘッダーを使用できます

header("有効期限: 1997 年 7 月 26 日月曜日 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); ("キャッシュ制御: キャッシュなし、再検証が必要");
header("プラグマ: キャッシュなし");

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

header("ステータス: 404 見つかりません");

例 4: ユーザーにファイルをダウンロードさせます。

header("Content-type: application/x-gzip");

header("Content-Disposition:attachment; filename=ファイル名");

header("Content-Description: PHP3 生成データ");
header -- 生の HTTP ヘッダーの説明を送信します

void header ( string string [, bool replace [, int http_response_code]] )

header() 関数は、生の HTTP ヘッダーを送信するために使用されます。 HTTP ヘッダーの詳細については、HTTP/1.1 仕様を参照してください。

オプションのパラメータ replace は、前の同様のヘッダーを置き換えるか、同じタイプのヘッダーを追加するかを示します。デフォルトは置換ですが、これを FALSE に設定すると、同じタイプの複数のヘッダーが強制的に送信されるようになります。例:

header('WWW-Authenticate: Negotiate');

header('WWW-Authenticate: NTLM', false);

2 番目のオプションのパラメータ http_response_code は、HTTP 応答コードを指定された値に強制します (このパラメータは PHP 4.3.0 の新機能です)。
特別なヘッダー呼び出しが 2 つあります。 1 つ目は文字列「HTTP/」 (大文字と小文字は区別されません) で始まるヘッダーで、送信する HTTP ステータス コードを決定するために使用できます。たとえば、PHP を使用してファイルが見つからない場合のエラー処理リクエストを処理するように Apache を構成する場合 (ErrorDocument ディレクティブを使用)、スクリプトが正しいステータス コードを生成することを確認する必要があります。

header("HTTP/1.0 404 Not Found")

?>
注: 実際の header() 呼び出しが最初であるかどうかに関係なく、HTTP ステータス コードのヘッダー行は常にクライアントに送信される最初の行です。 HTTP ヘッダーがすでに送信されていない限り、新しいステータス行で header() 関数を呼び出すことで、いつでも上書きできます。


HTTPステータス検出(

HTTP

Header

): http://www.bkjia.com/tools/http_header.php 2 番目の特殊なケースは、「Location:」ヘッダーです。このヘッダーをブラウザに送り返すだけでなく、以前に 3xx ステータス コードが発行されていない限り、REDIRECT (302) ステータス コードもブラウザに返します。 header("Location: http://www.example.com/"); /* ブラウザをリダイレクトします*/ /* リダイレクト後に後続のコードが実行されないようにします*/

exit ; ?>

注: HTTP/1.1 標準では、Location: のパラメータとして絶対アドレス URI が必要ですが、一部のクライアントは相対 URI をサポートしています。通常、$_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF']、および dirname() 関数を使用して、相対 URI から絶対 URI を自分で生成できます。

header("場所: http://%22.$_server['http_host'/]
.rtrim(dirname($_SERVER['PHP_SELF']), '/\')
."/ ".$relative_url);
?>

注: session.use_trans_sid が有効になっている場合でも、セッション ID は Location ヘッダー情報とともに渡されません。 SID 定数として手動で渡す必要があります。

PHP スクリプトは通常、いくつかの動的コンテンツを生成しますが、ブラウザやプロキシ サーバーによってキャッシュされてはなりません。多くのプロキシ サーバーとブラウザは、次の方法でキャッシュを無効にすることができます:

header("Cache-Control: no-cache、must-revalidate") // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");過去の時間

?>

注: 上記のコードをすべて出力しなくても、Web ページがバッファリングされていないことがわかるかもしれません。ブラウザのデフォルトのキャッシュ動作を変更するためにユーザーが設定できるオプションは多数あります。上記のヘッダーを送信することで、スクリプト ページがキャッシュされる可能性のある設定をオーバーライドできるようになります。

さらに、セッションが使用される場合、 session_cache_limiter() 関数と session.cache_limiter オプションを使用して、正しいキャッシュ関連のヘッダーを自動的に生成できます。

通常の HTML マークアップ、空白行、または PHP からの場合でも、実際の出力の前に header() を呼び出す必要があることに注意してください。よくある間違いは、include()、require()、またはその他のファイル アクセス関数を通じてコードを読み取るときに、header() を呼び出す前にスペースまたは空行が送信されることです。このエラーは、単一の PHP/HTML ファイルでもよく発生します。


/* header()を呼び出す前に何かが出力されているため、エラーが発生します
* */
header('Location: http://www.example.com/ ') ;
?>

注: PHP 4 以降、この問題はいくつかの出力バッファリング関数によって解決できます。その代償として、ブラウザへのすべての出力は、送信コマンドが発行されるまでサーバー上にキャッシュされます。この機能を実現するには、コード内で ob_start() および ob_end_flush() を使用するか、php.ini の Output_buffering 構成オプションを変更するか、サーバー構成ファイルを変更します。

header() の 2 つの一般的な使用法を以下に示します:

//ページのエンコーディングを設定します:
header('Content-Type: text/html;charset=gb2312');
//ページを調整します:
header('location:http://www.baidu.com') ;

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/363871.html技術記事 PHP の学習を始めたばかりの場合は、学習する必要のある関数がたくさんあるかもしれません。今日は PHP Header() の使い方を学習します。詳細については、PHP の中国語マニュアルを参照してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。