PHP($_SERVER)サーバー変数一覧と実用例

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPの$_SERVER変数は種類も多く、自分のURLやホストなどを取得したいときついつい忘れて調べることも多いですね。

しかしリファレンスを見ても、なかなか思うように取得できなかったり結構手間取ることもあります。

自分用にも一覧にまとめ、いくつかサンプルを載せました。同じ悩みを抱えている方にもぜひ活用していただければと思います。

 

$_SERVER変数一覧

変数名説明出力例
$_SERVER['SERVER_NAME']現在のサーバーのホスト名www.flatflag.nir87.com
$_SERVER['REQUEST_URI']ページにアクセスする際に指定されたURI(ドメイン以下のパス)/index.php,/category/php/など
$_SERVER['REQUEST_METHOD']現在のページにアクセスする際に使用されたメソッドPOST,GETなど
$_SERVER['DOCUMENT_ROOT']現在実行されているスクリプトのドキュメントルートディレクトリ(ドメインルート)
/home/hoge/www
$_SERVER['SCRIPT_FILENAME']現在実行されているスクリプトの絶対パス/home/hoge/www/php/test.php
$_SERVER['SCRIPT_NAME']現在実行されているスクリプトのパス/test.php
$_SERVER['SERVER_PROTOCOL']ページがリクエストされた際のプロトコル名/バージョンHTTP/1.0
$_SERVER['QUERY_STRING']ページがリクエストされた際に検索引数があれば、その値?page=2&id=3
$_SERVER['PHP_SELF']現在実行されているスクリプトのファイル名index/php
$_SERVER['REMOTE_ADDR']訪問したユーザーのIPアドレス127.0.0.1
$_SERVER['REMOTE_PORT']webサーバの通信に使用されているポート番号80
$_SERVER['REMOTE_HOST']現在のユーザーのホスト名
$_SERVER['HTTP_HOST']現在のリクエストのホスト、ヘッダーがあればその内容www.flatflag.nir87.com
$_SERVER['HTTP_REFERER']このページに遷移する前に参照していたページhttp://www.yahoo.co.jp
$_SERVER['HTTP_USER_AGENT']現在のリクエストのユーザーエージェント(ブラウザ)かヘッダーMozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:43.0) Gecko/20100101 Firefox/43.0
$_SERVER['HTTP_CONNECTION']現在のリクエストのコネクション、ヘッダーがあればその内容keep-alive
$_SERVER['SERVER_SOFTWARE']レスポンスヘッダ上に書かれている、 サーバーの認識文字列Apache/2.4.17
$_SERVER['REQUEST_TIME']リクエストの開始時のタイムスタンプ1456293858
$_SERVER['HTTP_ACCEPT']現在のリクエストの Accept: ヘッダがもしあれば その内容text/html,application/xhtml+xml,application/xml;q=0.9
$_SERVER['HTTP_ACCEPT_CHARSET']現在のリクエストの Accept-Charset: ヘッダが もしあればその内容iso-8859-1,utf-8
$_SERVER['HTTP_ACCEPT_ENCODING']現在のリクエストに Accept-Encoding: ヘッダが もしあればその内容gzip
$_SERVER['HTTP_ACCEPT_LANGUAGE']現在のリクエストに Accept-Language: ヘッダが もしあればその内容ja
$_SERVER['SERVER_PORT']Web サーバーの通信ポートとして使用されているポート番号80

$_SERVER変数を使ったサンプル

現在のURLを表示

http://www.flatflag.nir87.com/server-358

現在アクセスしているURLを上記のように表示させました。

以下の部品から成り立っています。

  • ‘http://’
  • $_SERVER[‘HTTP_HOST’] → ‘www.flatflag.nir87.com’
  • $_SERVER[‘REQUEST_URI’] → ‘/server-358’

URLを手打ちで指定すると、URLが変わった際に書き直さないといけませんが、こういう風にサーバー変数を使うことで、メンテナンス性にも優れますね。

imageフォルダのパスを指定する

イメージフォルダを指定してファイルをアップロードする際などによく使いますね。

以下のようになります。

  • $_SERVER[‘DOCUMENT_ROOT’] → ‘/home/hoge/www’
  • ‘/images/’

ドキュメントルートを返すサーバー変数に所定のフォルダのパスを繋げました。

POSTされたかを確認する

フォームなどでサンクスページに重要な処理を記述していた場合、ダイレクトにサンクスページにアクセスされたら不都合もありますね。

そこで、フォームからPOST経由でアクセスされたかを確認する方法です。

POST経由ではなくダイレクトでアクセスしてきたら、警告を表示し、不正アクセスを防ぎます。

※本来はトークンやその他セキュリティ対策も併せて実装することが多いです。

 

他にも、$_SERVER['REMOTE_ADDR']でユーザーのIPアドレスを取得し、コメントスパムを排除したり、遷移元によって処理を変えたり、さまざまなプログラムが作れますね。

サーバー変数は上記以外にもいろいろあり、サーバー環境によって変わってきます。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*