Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
$_SERVER対応: PHP 4(2000)
Webサーバーの情報やHTTPリクエストの詳細を取得するスーパーグローバル変数です。リクエストメソッドの判定やリダイレクト先の組み立てなど、サーバーサイド処理の基盤として使用されます。
構文
// リクエストメソッドを取得します。 $_SERVER['REQUEST_METHOD']; // ホスト名を取得します。 $_SERVER['HTTP_HOST']; // リクエストURIを取得します。 $_SERVER['REQUEST_URI']; // スクリプトのファイルパスを取得します。 $_SERVER['SCRIPT_FILENAME'];
変数一覧
| キー | 概要 |
|---|---|
| REQUEST_METHOD | リクエストに使用されたHTTPメソッドを返します。『GET』『POST』『PUT』『DELETE』などの値が入ります。 |
| HTTP_HOST | リクエスト先のホスト名を返します。Hostヘッダーの値が入ります。 |
| REQUEST_URI | リクエストされたURIを返します。クエリ文字列を含む完全なパスが入ります。 |
| QUERY_STRING | URLの『?』以降のクエリ文字列を返します。 |
| SCRIPT_NAME | 実行中のスクリプトのパスを返します。 |
| SCRIPT_FILENAME | 実行中のスクリプトの絶対ファイルパスを返します。 |
| DOCUMENT_ROOT | Webサーバーのドキュメントルートのパスを返します。 |
| REMOTE_ADDR | クライアントのIPアドレスを返します。プロキシ経由の場合は中継サーバーのIPになることがあります。 |
| HTTP_USER_AGENT | ブラウザのUser-Agent文字列を返します。 |
| HTTP_REFERER | リンク元のURLを返します。ブラウザが送信しない場合もあるため、常に存在するとは限りません。 |
| HTTPS | HTTPS接続の場合に『on』が設定されます。HTTP接続では未定義です。 |
| SERVER_PORT | サーバーのポート番号を返します。通常は『80』または『443』です。 |
| CONTENT_TYPE | リクエストのContent-Typeヘッダーの値を返します。 |
サンプルコード
<?php
// リクエストメソッドを判定します。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "POSTリクエストを受信しました。";
} else {
echo "GETリクエストです。"; // ブラウザでアクセスした場合に出力されます。
}
// 現在のURLを組み立てます。
$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$currentUrl = $scheme . '://' . $host . $uri;
echo $currentUrl; // 『https://example.com/page.php?id=1』のように出力されます。
// クライアントのIPアドレスを取得します。
$ip = $_SERVER['REMOTE_ADDR'];
echo "アクセス元IP: " . $ip; // 『アクセス元IP: 192.168.1.100』のように出力されます。
// User-Agentを取得します。
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
echo "ブラウザ: " . htmlspecialchars($ua);
// リファラーの確認です。未設定の場合もあるため isset() でチェックします。
if (isset($_SERVER['HTTP_REFERER'])) {
echo "リンク元: " . htmlspecialchars($_SERVER['HTTP_REFERER']);
} else {
echo "リンク元情報はありません。";
}
// スクリプトのパス情報を確認します。
echo $_SERVER['SCRIPT_NAME']; // 『/index.php』のように出力されます。
echo $_SERVER['DOCUMENT_ROOT']; // 『/var/www/html』のように出力されます。
// クエリ文字列を取得します。
// URL: page.php?category=php&page=2
echo $_SERVER['QUERY_STRING']; // 『category=php&page=2』と出力されます。
概要
『$_SERVER』はWebサーバーとHTTPリクエストに関する情報を格納するスーパーグローバル変数です。『$_SERVER』の値の一部はクライアントが送信するHTTPヘッダーから取得されるため、信頼できないデータが含まれています。HTMLに出力する際は必ず『htmlspecialchars()』でエスケープしてください。
特に『HTTP_HOST』『HTTP_REFERER』『HTTP_USER_AGENT』『REQUEST_URI』はクライアントが自由に設定できるヘッダー値です。セキュリティに関わる処理でこれらの値を使う場合は、ホワイトリストでの検証を行うようにしてください。
リクエストデータの取得には『$_GET / $_POST』を使用し、HTTPヘッダーの送信には『header()』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。