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

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

WBOY
WBOYオリジナル
2016-07-21 15:11:51718ブラウズ

PHP の学習を始めたばかりの場合は、学習する必要のある関数がたくさんあるかもしれません。詳細については、PHP の中国語マニュアルを参照してください。ヘッダー関数。header404 Page not not copyコードは次のとおりです。 4. Apache 設定 04. PHP 関数で、nginx 設定の


コピーコード

を次のように変更します。 error_page 404 /404.php;

php heager 301



コードをコピー コードは次のとおりです:
header("HTTP/1.1 301 Moved Per manently"); URL");
?>



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

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

これは Baidu にジャンプします

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

これは Google にジャンプします
以下はヘッダー関数の詳細な手順です
1. 機能:
~~~~~~~~~
PHP は HTTP プロトコルを使用して HTML ドキュメントのヘッダーをブラウザーに送信するだけです。このページの処理方法をブラウザーに正確に指示します。HTTP プロトコルに精通している必要はありません。従来のヘッダーには次の 3 つのヘッダーのいずれかが含まれている必要があり、1 回のみ表示されます。 。

Location: xxxx:yyyy/zzzz
Content-Type: xxxx/yyyy
Status: nnn xxxxxx

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

3. HTTPプロトコルのステータスコードの意味
~~~~~~~~~~~~~~~~~~~~~~~~~~

1×× 予約
2××リクエストが正常に受信されたことを示します
3×× リクエストを完了するには、顧客はリクエストをさらに絞り込む必要があります
4×× 顧客エラー
5×× サーバーエラー


操作例:
~~~~~の4つ。 ~~~~~~ ~~
<1> リダイレクト関数、これは最も一般的な

Header("Location: http://www.jb51.net/");

<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');

たとえば、次のようにします。ユーザーによるこのページへのアクセスを制限するには、以下に示すようにステータスを 404 に設定すると、ブラウザーにページが存在しないことが表示されます

header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");

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

Header("Location: http://www.jb51.net/"); exit;

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

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s"); . " GMT"); header("Cache-Control: no-cache, must-revalidate");

例 3: ファイルが使用できないことをブラウザに表示します。情報を見つけました。

header("ステータス: 404 Not Found");

例 4: ユーザーにファイルのダウンロードを許可します。

header("Content-type: application/x-gzip");
header("Content-Disposition:attachment; filename=ファイル名");
header("Content-Description: PHP3 生成データ"); -- 生の HTTP ヘッダーの説明を送信する

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

生の HTTP ヘッダーを送信するには、header() 関数を使用します。 HTTP ヘッダーの詳細については、HTTP/1.1 仕様を参照してください。
オプションのパラメータ replace は、前の同様のヘッダーを置き換えるか、同じタイプのヘッダーを追加するかを示します。デフォルトは置換ですが、これを FALSE に設定すると、同じタイプの複数のヘッダーが強制的に送信されるようになります。例:

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

header("HTTP/1.0 404 Not Found")
?>

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

HTTP ステータス検出 (HTTP ヘッダー):

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("Location: http:// % 22.$_server['http_host'/]
.rtrim(dirname($_SERVER['PHP_SELF']), '/\')
."/".$relative_url
?>有効な場合、session.use_trans_sid がない場合、セッション ID は Location ヘッダー情報とともに渡されません。通常、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() を渡すことです。 () または他のファイル アクセス関数を使用すると、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('場所:http://www.baidu.com');

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