【PHP】IPアドレス、リンク元、アクセスページ、ユーザーエージェントなどの取得方法

公開日:
更新日:
カテゴリー: PHP

アクセスしてきたユーザーの以下の情報などをPHPで取得する方法を説明しています。

  • IPアドレス
  • リンク元
  • アクセスページ
  • ユーザーエージェント

各種サーバー情報の取得

IPアドレス、リンク元、アクセスページ、ユーザーエージェントなどの情報は、サーバーが配列で生成してくれるので、あとはPHPでそれを取得するだけなので簡単です。

以下に列挙します。

  • IPアドレス
    $_SERVER['REMOTE_ADDR']
  • リンク元
    $_SERVER['HTTP_REFERER']
  • アクセスページ
    $_SERVER['REQUEST_URI']
  • ユーザーエージェント
    $_SERVER['HTTP_USER_AGENT']

サーバー情報の詳細

アクセスしてきた人の情報はサーバーが配列で生成してくれますが、上記以外でどんな情報があるんだろうか?と気になったので、調べてみました。

以下は、現在ご覧になっているページに私がトップページからアクセスした時のものです(伏字にした方がいいかなって思ったものは伏字にしています)。

Array
    (
        [SERVER_SOFTWARE] => Apache
        [REQUEST_URI] => /php/1264.html
        [DOCUMENT_ROOT] => /○○○/○○○/○○○/○○○
        [GATEWAY_INTERFACE] => CGI/1.1
        [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
        [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
        [HTTP_ACCEPT_LANGUAGE] => ja,en-US;q=0.8,en;q=0.6
        [HTTP_CONNECTION] => keep-alive
        [HTTP_HOST] => ysklog.net
        [HTTP_REFERER] => http://ysklog.net/
        [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
        [PATH] => /bin:/usr/bin
        [PHPRC] => /○○○/○○○/○○○/○○○/
        [QUERY_STRING] => 
        [REDIRECT_STATUS] => 200
        [REDIRECT_UNIQUE_ID] => ○○○
        [REDIRECT_URL] => /php/1264.html
        [REMOTE_ADDR] => ○○○.○○○.○○○.○○○
        [REMOTE_PORT] => ○○○
        [REQUEST_METHOD] => GET
        [SCRIPT_FILENAME] => /○○○/○○○/○○○/○○○/index.php
        [SCRIPT_NAME] => /index.php
        [SERVER_ADDR] => ○○○.○○○.○○○.○○○
        [SERVER_ADMIN] => ○○○@ysklog.net
        [SERVER_NAME] => ysklog.net
        [SERVER_PORT] => ○○○
        [SERVER_PROTOCOL] => HTTP/1.1
        [SERVER_SIGNATURE] => 
        [UNIQUE_ID] => ○○○
        [PHP_SELF] => /index.php
        [REQUEST_TIME] => 1388312579
)

この情報を参考にすれば、他の情報も取得できます。

例えば、サーバー自体のIPアドレスを取得したい場合は、以下のようにすれば良いです。

$_SERVER['SERVER_ADDR']
なお、常時SSL化してURLの先頭が「https」の場合、
$_SERVER['HTTPS']

で「on」と取得できるので、三項演算子を使って次のように「http」と「https」を取得できます。

echo empty($_SERVER["HTTPS"]) ? "http://" : "https://";

 

ログを記録するプログラム

サーバーが生成してくれる情報からIPアドレス、リンク元、アクセスページ、ユーザーエージェントの取得ができますので、PHPで簡易のアクセスログを作ることができます。

この詳しい方法ですが、日付ごとにファイルにアクセスログを記録する方法を参照して下さい。

 

頑張って書いたのでちょろっと読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント