【PHP8.x】http_response_code()関数の使い方
http_response_code関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
http_response_code関数は、HTTPレスポンスステータスコードを取得または設定する関数です。Webサーバーがクライアント(Webブラウザなど)に送信するレスポンスのステータスを表す数値コードを操作するために使用されます。この関数を使うことで、PHPスクリプトからHTTPレスポンスヘッダーのステータスコードを動的に変更できます。
引数を指定せずにこの関数を呼び出すと、現在のリクエストにおけるHTTPレスポンスステータスコードを返します。ステータスコードが明示的に設定されていない場合、デフォルト値(通常は200 OK)が返されます。
引数に整数値を指定してこの関数を呼び出すと、HTTPレスポンスヘッダーのステータスコードが指定された値に設定されます。例えば、http_response_code(404)と記述すると、ステータスコードは404 Not Foundに設定されます。この場合、関数は成功時にtrue、失敗時にfalseを返します。ステータスコードの設定は、スクリプトの実行が完了する前にクライアントに送信されるHTTPレスポンスに影響を与えます。
HTTPステータスコードは、Webアプリケーションの状態や結果をクライアントに伝えるために重要な役割を果たします。例えば、リダイレクト(301, 302)、クライアントエラー(400, 404)、サーバーエラー(500, 503)などを適切に設定することで、ユーザーエクスペリエンスを向上させ、SEO対策にも貢献できます。http_response_code関数は、Webアプリケーション開発において、このようなHTTPステータスコードを制御するための基本的なツールとなります。
構文(syntax)
1<?php 2http_response_code(200); 3?>
引数(parameters)
int $response_code = 0
- int $response_code = 0: 設定するHTTPレスポンスコードを指定する整数。デフォルトは0で、取得のみを行う。
戻り値(return)
int|false
HTTP レスポンスコードを取得または設定します。成功した場合は HTTP ステータスコードの整数値を、失敗した場合は false を返します。
サンプルコード
PHPでhttp_response_code(400)を使いエラー処理する
1<?php 2 3/** 4 * リクエストパラメータの検証を行い、問題があればHTTP 400 Bad Requestを設定するサンプル関数。 5 * 6 * この関数は、`user_id` という名前のGETパラメータがURLに含まれているかを確認します。 7 * パラメータが不足している場合、HTTPステータスコードを400 (Bad Request) に設定し、 8 * エラーメッセージを出力して処理を終了します。 9 * 10 * この例は、APIエンドポイントやWebページで必須パラメータが正しく提供されない場合の 11 * 典型的なエラー処理を示しています。 12 */ 13function handle_bad_request_example(): void 14{ 15 $requiredParamName = 'user_id'; 16 17 // GETリクエストに必須パラメータが含まれているかチェック 18 if (!isset($_GET[$requiredParamName]) || empty($_GET[$requiredParamName])) { 19 // 必須パラメータが不足している、または空の場合 20 // HTTPステータスコードを400 (Bad Request) に設定 21 http_response_code(400); 22 23 // クライアント向けにエラーメッセージを出力 24 echo "エラー: 必須パラメータ '{$requiredParamName}' が見つからないか、無効です。\n"; 25 echo "現在のHTTPステータスコード: " . http_response_code() . "\n"; // 設定されたステータスコードを確認 26 exit(); // これ以上処理を進めずに終了 27 } 28 29 // パラメータが正常に提供された場合の処理 30 $userId = htmlspecialchars($_GET[$requiredParamName]); // XSS対策のためサニタイズ 31 echo "成功: ユーザーID '{$userId}' を受け取りました。\n"; 32 echo "現在のHTTPステータスコード: " . http_response_code() . " (OK)\n"; // デフォルトの200 (OK) が維持されていることを確認 33} 34 35// 関数を実行 36handle_bad_request_example(); 37 38?>
http_response_code関数は、Webサーバーがクライアントに返すHTTPステータスコードを設定または取得するために使用されます。引数 $response_code には、設定したいHTTPステータスコードを整数で指定します。例えば、http_response_code(400)とすることで「400 Bad Request」というステータスコードを設定できます。この関数は、引数を指定せずに呼び出した場合、現在設定されているHTTPステータスコードを整数で返します。ステータスコードの設定に失敗した場合は false を返します。
このサンプルコードは、Webアプリケーションで必須のGETパラメータuser_idが存在しない、または空の場合にエラー処理を行う例です。if文の条件が真となり、パラメータが不正であると判断された際に、http_response_code(400); を実行してHTTPステータスコードを400番に設定しています。これは、クライアントからのリクエストが不正であり、サーバーがそのリクエストを処理できないことを示す標準的な方法です。ステータスコードを設定した後、エラーメッセージを表示し、exit()でプログラムの実行を終了します。これにより、ブラウザやAPIクライアントは不正なリクエストであったことを認識できます。パラメータが正常に提供された場合は、デフォルトのHTTPステータスコード200 (OK) が維持され、通常の処理が続行されます。
http_response_code()関数は、ウェブサーバーからの応答のHTTPステータスコードを設定するために利用します。引数に0を渡すか引数なしで呼び出すと、現在設定されているステータスコードを確認できます。エラー発生時などに特定のステータスコードを設定した際は、その後の処理をexit()関数で中断させることが非常に重要です。これにより、意図したステータスコードが確実にクライアントに伝わり、予期せぬ出力や上書きを防げます。HTTPヘッダー情報であるステータスコードは、echoなどでコンテンツが出力される前に設定しなければなりません。出力後に設定しようとするとエラーが発生しますのでご注意ください。また、$_GETなどのユーザー入力値は、常にhtmlspecialchars()関数などで適切にサニタイズ処理を行い、セキュリティ脆弱性への対策を徹底することが必須です。本番環境では、エラーの詳細情報を直接クライアントに表示せず、ログに記録するなどの配慮も求められます。
PHP http_response_code関数と定数でステータスを設定する
1<?php 2 3/** 4 * PHPのhttp_response_code関数とHTTPレスポンスコード定数の使用例。 5 * 6 * http_response_code関数は、HTTPレスポンスのステータスコードを設定または取得するために使用されます。 7 * PHPのコアには、HTTPステータスコードのための組み込み定数(例:HTTP_OK)は提供されていません。 8 * これらは通常、フレームワークやPECL HTTP拡張機能によって定義されるか、 9 * この例のように、コードの可読性と保守性のために開発者が独自に定義します。 10 */ 11 12// よく使われるHTTPレスポンスコードを定数として定義します。 13// これにより、マジックナンバー(直接的な数値)の使用を避け、コードが分かりやすくなります。 14const HTTP_OK = 200; // 成功 15const HTTP_MOVED_PERMANENTLY = 301; // 恒久的なリダイレクト 16const HTTP_FOUND = 302; // 一時的なリダイレクト 17const HTTP_BAD_REQUEST = 400; // クライアントエラー(不正なリクエスト) 18const HTTP_NOT_FOUND = 404; // リソースが見つからない 19const HTTP_INTERNAL_SERVER_ERROR = 500; // サーバーエラー 20 21/** 22 * HTTPレスポンスコードを設定し、取得する処理をデモンストレーションします。 23 * 24 * この関数は、GETクエリパラメータ 'status' に応じて異なるHTTPステータスコードを設定します。 25 * 'status' パラメータが指定されない場合、または認識されない場合は、デフォルトのステータスコードを設定します。 26 * 27 * 実行方法: 28 * - 直接アクセス: http://localhost/your_script.php (HTTP_OK: 200) 29 * - 'notfound' ステータスでアクセス: http://localhost/your_script.php?status=notfound (HTTP_NOT_FOUND: 404) 30 * - 'redirect' ステータスでアクセス: http://localhost/your_script.php?status=redirect (HTTP_FOUND: 302 - 一時リダイレクト) 31 * - 'moved' ステータスでアクセス: http://localhost/your_script.php?status=moved (HTTP_MOVED_PERMANENTLY: 301 - 恒久リダイレクト) 32 * - 'error' ステータスでアクセス: http://localhost/your_script.php?status=error (HTTP_INTERNAL_SERVER_ERROR: 500) 33 * - 不明なステータスでアクセス: http://localhost/your_script.php?status=unknown (HTTP_BAD_REQUEST: 400) 34 */ 35function demonstrateHttpResponseCode(): void 36{ 37 // デフォルトのステータスコードをHTTP_OK (200) に設定します。 38 $statusCodeToSet = HTTP_OK; 39 $redirectLocation = ''; 40 41 // GETパラメータ 'status' に基づいて、設定するステータスコードを決定します。 42 if (isset($_GET['status'])) { 43 switch ($_GET['status']) { 44 case 'notfound': 45 $statusCodeToSet = HTTP_NOT_FOUND; 46 break; 47 case 'redirect': 48 $statusCodeToSet = HTTP_FOUND; 49 // リダイレクトの場合、Locationヘッダも設定するのが一般的です。 50 $redirectLocation = '/temporary-destination.php'; 51 break; 52 case 'moved': 53 $statusCodeToSet = HTTP_MOVED_PERMANENTLY; 54 // 恒久的なリダイレクトの場合もLocationヘッダを設定します。 55 $redirectLocation = '/permanent-destination.php'; 56 break; 57 case 'error': 58 $statusCodeToSet = HTTP_INTERNAL_SERVER_ERROR; 59 break; 60 default: 61 // 未知のステータスが指定された場合は、不正なリクエストとして扱います。 62 $statusCodeToSet = HTTP_BAD_REQUEST; 63 break; 64 } 65 } 66 67 // http_response_code() 関数を使用してHTTPレスポンスコードを設定します。 68 // この関数は、HTTPステータスライン (例: HTTP/1.1 200 OK) を送信します。 69 // 引数を与えると、その値を設定し、以前のステータスコードを返します。 70 // 設定に失敗した場合は false を返します。 71 $previousStatusCode = http_response_code($statusCodeToSet); 72 73 // リダイレクトが必要な場合は、Locationヘッダを送信します。 74 // http_response_code()はステータスラインを設定するのみで、Locationヘッダは別途必要です。 75 if (!empty($redirectLocation)) { 76 header('Location: ' . $redirectLocation, true, $statusCodeToSet); 77 // リダイレクトヘッダを送信した後、スクリプトの実行を終了するのが一般的です。 78 // デモンストレーションのため、ここでは続行します。 79 } 80 81 // http_response_code() 関数を引数なしで呼び出すと、現在設定されているHTTPレスポンスコードを取得できます。 82 // まだ何も設定されていない場合や、設定に失敗した場合は false を返します。 83 $currentStatusCode = http_response_code(); 84 85 // デモンストレーションのための出力 86 echo "<h1>HTTP Response Code Example</h1>"; 87 echo "<p><strong>リクエストされたステータスパラメータ:</strong> " . ($_GET['status'] ?? 'N/A') . "</p>"; 88 echo "<p><strong>設定を試みたステータスコード:</strong> " . $statusCodeToSet . "</p>"; 89 echo "<p><strong>実際に設定されたHTTPレスポンスコード:</strong> " . ($currentStatusCode === false ? '設定失敗' : $currentStatusCode) . "</p>"; 90 echo "<p><strong>http_response_code()呼び出し前のステータスコード:</strong> " . ($previousStatusCode === false ? '利用不可' : $previousStatusCode) . "</p>"; 91 92 // ステータスコードに応じたメッセージを表示します。 93 switch ($currentStatusCode) { 94 case HTTP_OK: 95 echo "<p>メッセージ: リクエストは正常に処理されました。</p>"; 96 break; 97 case HTTP_NOT_FOUND: 98 echo "<p>メッセージ: 指定されたリソースは見つかりませんでした。</p>"; 99 break; 100 case HTTP_FOUND: 101 echo "<p>メッセージ: このページは一時的に別の場所へ移動しました。ブラウザによっては自動的にリダイレクトされます。</p>"; 102 break; 103 case HTTP_MOVED_PERMANENTLY: 104 echo "<p>メッセージ: このページは恒久的に別の場所へ移動しました。ブラウザによっては自動的にリダイレクトされます。</p>"; 105 break; 106 case HTTP_BAD_REQUEST: 107 echo "<p>メッセージ: クライアントからのリクエストが不正です。</p>"; 108 break; 109 case HTTP_INTERNAL_SERVER_ERROR: 110 echo "<p>メッセージ: サーバー内部で予期せぬエラーが発生しました。</p>"; 111 break; 112 default: 113 echo "<p>メッセージ: 未知のステータスコードか、対応していないケースです。</p>"; 114 break; 115 } 116 117 // 注意: http_response_code() や header() のようなヘッダ送信関数は、 118 // 実際のコンテンツ(echoなど)をブラウザに出力する前に呼び出す必要があります。 119 // コンテンツが出力された後にヘッダを送信しようとすると、「Headers already sent」エラーが発生します。 120} 121 122// 例示関数を実行します。 123demonstrateHttpResponseCode();
PHPのhttp_response_code関数は、Webサーバーがクライアント(ブラウザなど)に返すHTTPレスポンスのステータスコードを設定または取得するために使用されます。この関数に整数値の引数$response_code(例: 200, 404, 500)を指定すると、その値が現在のHTTPステータスコードとして設定され、設定前のステータスコードが整数値で返されます。設定に失敗した場合はfalseが返されます。引数を省略して呼び出すと、現在設定されているHTTPステータスコードを整数値で取得できます。
サンプルコードでは、PHPの標準機能にはHTTPステータスコードの組み込み定数が存在しないため、コードの可読性を高めるためにHTTP_OK(200)やHTTP_NOT_FOUND(404)といった独自の定数を定義しています。これにより、数値リテラル(マジックナンバー)を避け、コードの意図が明確になります。
HTTPステータスコードが301(恒久的なリダイレクト)や302(一時的なリダイレクト)のようなリダイレクトを示す場合、http_response_code関数でステータスコードを設定するだけでなく、header('Location: ...')関数を使ってリダイレクト先のURLを別途指定する必要があります。重要な点として、これらのHTTPヘッダを送信する関数は、echoなどを使ってWebページの内容が出力される前に行う必要があります。出力後にヘッダを送信しようとするとエラーが発生しますのでご注意ください。この関数は、Webアプリケーションの応答を細かく制御し、ユーザーや検索エンジンに適切な情報(例: ページが見つからない、リソースが移動したなど)を伝える上で非常に重要です。
http_response_code関数は、HTTPステータスコードを設定・取得する際に使われます。最も重要な注意点は、この関数やheader関数は、echoなどのコンテンツ出力よりも前に呼び出す必要があることです。出力後に呼び出すと「Headers already sent」エラーが発生し、正しく動作しません。
PHPにはHTTPステータスコードの組み込み定数が無いため、コードの可読性と保守性を高めるには、サンプルコードのように開発者が独自の定数を定義することが推奨されます。リダイレクト(3xx系ステータスコード)を設定する際は、http_response_code関数だけでなく、別途header('Location: ...')も併用し、通常はその後exitでスクリプトの実行を終了します。サンプルコードではデモンストレーションのため続けていますが、実運用ではexitが必要です。
引数を指定せずに関数を呼び出すと、現在設定されているステータスコードを取得できます。設定に失敗した場合や未設定の場合はfalseが返されるため、戻り値の確認も重要です。
PHP http_response_codeでステータスコードを設定・取得する
1<?php 2 3/** 4 * http_response_code関数の使用例 5 * 6 * このスクリプトは、HTTPレスポンスコードの設定と取得の方法を示します。 7 * システムエンジニアを目指す初心者向けに、Webサーバーからブラウザへ返す 8 * HTTPステータスコードの操作方法を解説します。 9 */ 10 11// 1. 現在のHTTPレスポンスコードを取得する 12// 引数を指定しない場合、現在設定されているコードを返します。 13// (デフォルトは通常200 OK) 14$currentCode = http_response_code(); 15echo "現在のHTTPレスポンスコード: " . ($currentCode !== false ? $currentCode : "取得失敗") . "\n"; 16 17// 2. HTTPレスポンスコードを明示的に設定する(例: 200 OK) 18// 成功した場合、設定前のレスポンスコードが返されます。 19$oldCode = http_response_code(200); 20echo "200 OKを設定しました。以前のコード: " . ($oldCode !== false ? $oldCode : "設定失敗") . "\n"; 21 22// 設定後の現在のコードを再度取得して確認 23$currentCodeAfterSet = http_response_code(); 24echo "設定後の現在のHTTPレスポンスコード: " . ($currentCodeAfterSet !== false ? $currentCodeAfterSet : "取得失敗") . "\n"; 25 26// 3. エラーを示すHTTPレスポンスコードを設定する(例: 404 Not Found) 27// Webサイトで要求されたリソースが見つからない場合などによく使用されます。 28// 例えば、特定の条件が満たされない場合にエラーコードを設定するシナリオをシミュレートします。 29$resourceExists = false; // リソースが見つからなかったと仮定 30if (!$resourceExists) { 31 $oldCodeForError = http_response_code(404); // 404 Not Foundを設定 32 echo "404 Not Foundを設定しました。以前のコード: " . ($oldCodeForError !== false ? $oldCodeForError : "設定失敗") . "\n"; 33 echo "このコードは、要求されたページやファイルが見つからないことを示します。\n"; 34} 35 36// 4. スクリプト実行終了時の最終的なHTTPレスポンスコードを確認する 37$finalCode = http_response_code(); 38echo "最終的なHTTPレスポンスコード: " . ($finalCode !== false ? $finalCode : "取得失敗") . "\n"; 39 40?>
PHPのhttp_response_code関数は、Webサーバーがブラウザに返すHTTPステータスコードを操作するために使用されます。この関数は、引数を指定しない場合は現在設定されているHTTPレスポンスコードを取得し、整数値を引数に指定するとそのコードを設定します。
例えば、http_response_code()のように引数なしで呼び出すと、現在のコード(デフォルトは200 OK)が返されます。新しいコードを設定する場合、http_response_code(200)のように数値を渡します。このとき、設定に成功すると、設定前のレスポンスコードが戻り値として返されます。これにより、コードが正常に更新されたことを確認できます。
Webページが見つからない場合などに表示される「404 Not Found」のようなエラーコードも、http_response_code(404)と設定することで、ブラウザに要求されたリソースが見つからないことを適切に伝えることができます。Webアプリケーションが特定の条件に基づいて、成功(200 OK)やエラー(404 Not Foundなど)といった異なるHTTPステータスを返す必要がある場合に、この関数は非常に重要です。関数が失敗した場合はfalseを返しますが、通常はサーバー環境に問題がない限り成功します。これは、Webサイトの適切な動作やエラー処理を制御する上でシステムエンジニアにとって必須の機能です。
http_response_code関数はHTTPヘッダーを送信するため、既にHTML出力やechoなど何らかのコンテンツがブラウザへ送られている後に呼び出すと、エラー(Headers already sent)になる可能性があります。コードを設定する際は、スクリプトの早い段階で実行するよう注意が必要です。また、関数の戻り値は失敗時にfalseを返すため、必ずその結果を確認し、適切なエラーハンドリングを行うことが重要です。設定するHTTPステータスコードは、その意味(例: 200は成功、404はリソースなし)を正しく理解して使用しましょう。特に404のようなエラーコードを設定した後は、その後のスクリプト処理を停止するためにexit;などを記述する必要がある場合もあります。
PHP: http_response_code でステータスコードとメッセージを設定する
1<?php 2 3/** 4 * このスクリプトは、PHPのhttp_response_code関数を使用して 5 * HTTPステータスコードを設定し、そのステータスに応じた 6 * ユーザー向けメッセージをWebページに表示する例を示します。 7 * 8 * クエリパラメータ 'status' を使用して、試すステータスコードを 9 * 指定できます。例: 10 * http://localhost/index.php?status=200 (成功) 11 * http://localhost/index.php?status=404 (ページが見つからない) 12 * http://localhost/index.php?status=500 (サーバーエラー) 13 */ 14 15// デフォルトのHTTPステータスコードとメッセージを設定 16$statusCode = 200; 17$statusReason = "OK"; // HTTPステータスラインの理由句 (PHPが自動で設定する場合もあるが、ここでは表示用) 18$displayMessage = "リクエストは正常に処理されました。"; 19 20// GETパラメータからステータスコードを取得し、対応するメッセージを準備 21if (isset($_GET['status'])) { 22 $requestedStatus = (int)$_GET['status']; // 整数に変換 23 24 switch ($requestedStatus) { 25 case 200: 26 $statusCode = 200; 27 $statusReason = "OK"; 28 $displayMessage = "リクエストは成功し、要求された情報が返されました。"; 29 break; 30 case 404: 31 $statusCode = 404; 32 $statusReason = "Not Found"; 33 $displayMessage = "お探しのページは見つかりませんでした。URLが正しいかご確認ください。"; 34 break; 35 case 500: 36 $statusCode = 500; 37 $statusReason = "Internal Server Error"; 38 $displayMessage = "サーバー内部でエラーが発生しました。しばらくしてから再度お試しください。"; 39 break; 40 default: 41 // 未知または無効なステータスコードが指定された場合 42 $statusCode = 400; 43 $statusReason = "Bad Request"; 44 $displayMessage = "無効なHTTPステータスコードが指定されました。"; 45 break; 46 } 47} 48 49// http_response_code関数でHTTPステータスコードを設定します。 50// この関数はHTTPレスポンスヘッダのステータスラインを変更します。 51// 設定が成功した場合、設定されたコードが返り、失敗した場合はfalseが返ります。 52$actualStatusCode = http_response_code($statusCode); 53 54// ステータスコードの設定が失敗した場合の処理(まれに発生) 55if ($actualStatusCode === false) { 56 // ログに記録するなどのエラーハンドリングを行うことができます。 57 error_log("Failed to set HTTP response code to " . $statusCode); 58 $statusCode = 500; // 内部エラーとして扱う 59 $statusReason = "Internal Server Error"; 60 $displayMessage = "サーバーエラーが発生しました。(ステータスコード設定失敗)"; 61 http_response_code($statusCode); // 再度500を試みる 62} 63 64// レスポンスのContent-Typeを設定(Webページ表示には推奨) 65header('Content-Type: text/html; charset=UTF-8'); 66 67?> 68<!DOCTYPE html> 69<html lang="ja"> 70<head> 71 <meta charset="UTF-8"> 72 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 73 <title>HTTP ステータスコード: <?php echo htmlspecialchars($statusCode); ?></title> 74 <style> 75 body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 40px; background-color: #f0f2f5; color: #333; display: flex; justify-content: center; align-items: center; min-height: 100vh; } 76 .container { background-color: #ffffff; padding: 40px; border-radius: 10px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); max-width: 600px; text-align: center; } 77 h1 { color: #dc3545; margin-bottom: 20px; font-size: 2.2em; } 78 p { line-height: 1.6; font-size: 1.1em; color: #555; } 79 .status-info { font-size: 1.5em; font-weight: bold; margin-bottom: 15px; color: #007bff; } 80 .explanation { font-style: italic; color: #777; margin-top: 30px; border-top: 1px solid #eee; padding-top: 20px; } 81 .links { margin-top: 25px; } 82 .links a { display: inline-block; margin: 0 10px; padding: 8px 15px; background-color: #007bff; color: white; text-decoration: none; border-radius: 5px; transition: background-color 0.3s ease; } 83 .links a:hover { background-color: #0056b3; } 84 </style> 85</head> 86<body> 87 <div class="container"> 88 <div class="status-info"> 89 HTTP ステータスコード: <?php echo htmlspecialchars($statusCode); ?> <?php echo htmlspecialchars($statusReason); ?> 90 </div> 91 <h1><?php echo htmlspecialchars($displayMessage); ?></h1> 92 <p> 93 このページは、<code>http_response_code()</code> 関数を使用して 94 設定されたHTTPステータスコードと、それに対応するメッセージを表示しています。 95 </p> 96 <div class="explanation"> 97 現在のWebブラウザのHTTPステータスは <code><?php echo htmlspecialchars($statusCode); ?> <?php echo htmlspecialchars($statusReason); ?></code> です。<br> 98 この値はPHPの <code>http_response_code(<?php echo htmlspecialchars($statusCode); ?>)</code> によって設定されました。 99 </div> 100 <div class="links"> 101 試す例: 102 <a href="?status=200">200 OK</a> 103 <a href="?status=404">404 Not Found</a> 104 <a href="?status=500">500 Internal Server Error</a> 105 <a href="?status=400">400 Bad Request</a> 106 </div> 107 </div> 108</body> 109</html>
PHPのhttp_response_code関数は、WebサーバーがWebブラウザなどのクライアントに返すHTTPステータスコードを設定するための重要な機能です。HTTPステータスコードは、Webリクエストの結果(成功、エラーなど)を数値で伝え、例えば「200」は成功、「404」はページが見つからない、「500」はサーバー内部エラーを示します。
この関数は、int $response_code = 0という引数を受け取ります。引数に設定したいステータスコード(例: 200, 404, 500)を整数で指定すると、WebサーバーのHTTPレスポンスヘッダにそのコードが設定されます。引数を省略するか0を指定した場合は、現在設定されているステータスコードを整数で取得できます。戻り値は、設定または取得されたステータスコードが整数で返され、設定が何らかの理由で失敗した場合にはfalseが返されます。
提供されたサンプルコードは、URLのクエリパラメータ(例: ?status=404)に応じて、Webページに表示するHTTPステータスコードとメッセージを動的に変更する方法を示しています。例えば、?status=404でアクセスすると、http_response_code(404)が実行され、ブラウザには「404 Not Found」というステータスが通知されます。同時に、スクリプトはユーザー向けの「お探しのページは見つかりませんでした。」というメッセージをWebページ上に表示します。この関数でHTTPヘッダが設定された後、header()関数でコンテンツタイプを指定し、HTMLコンテンツを生成しています。これにより、ユーザーはHTTPステータスコードとそれに紐づく情報を視覚的に確認できます。また、ステータスコードの設定が失敗した場合の簡単なエラー処理も含まれています。
http_response_code関数は、HTMLなど実際のコンテンツが出力される前に実行する必要があります。出力開始後に実行するとエラーが発生するため注意してください。また、この関数は設定失敗時にfalseを返すため、戻り値を必ず確認し、適切なエラー処理を実装することが重要です。
HTTPステータスコードは、Webページの状態をブラウザや検索エンジンに伝える重要な情報です。ユーザーへの表示メッセージとステータスコードの意味が一致しているか確認しましょう。クエリパラメータなど外部からの入力でステータスコードを設定する際は、整数型への変換や許可された値のみを受け入れることで、セキュリティに配慮してください。動的な内容を表示する際は、XSS対策としてhtmlspecialchars関数を常に使用してください。