Published on

PHPでよく使用する色々な情報を取得するものまとめ(ファイル名やホスト名など)

Authors

PHPでは色々な情報を取得できるものがいくつかありますが、色々あって頭がごちゃごちゃしてくるのでよく使うものを自分なりにまとめてみます。

$_SERVER

$_SERVERとは、サーバー情報および実行時の環境情報ということらしいですが、これを使ったものでファイル名を取得できるものがいくつかあります。

$_SERVER[‘PHP_SELF’]

現在実行しているスクリプトのファイル名が取得できます。ドキュメントルートから取得されます。http://example.com/foo/bar.php で $_SERVER[‘PHP_SELF’] を使った場合は /foo/bar.php となります。

この $_SERVER[‘PHP_SELF’] はXSS(クロスサイトスクリプティング)というセキュリティーホールになるらしく自ページに遷移させる場合等には使わない方がいいみたいです。

$_SERVER[‘SERVER_NAME’]

現在のスクリプトが実行されているサーバーのホスト名を取得します。同じようなスクリプトを違うサーバーでも実行させたりすることがわかっている場合などに自分はよく使います。

$_SERVER[‘HTTP_REFERER’]

現在のページに遷移する前にユーザーエージェントが参照していたページ(リファラー)のアドレス。取れないブラウザ等もあるのであまりあてになりませんが、明らかに取れる場合には使ったりしました。

$_SERVER[‘HTTP_USER_AGENT’]

現在のリクエストに User-Agent: ヘッダが もしあればその内容。ページにアクセスしてきているユーザーエージェントのしるしの文字列です。パソコンで見ているのかスマホで見ているのかを分岐させるのによく使います。

自動的に定義される定数

自動的に定義される定数(マジカル定数)というものが8つあるようですが、この中でよく使うもの。

__FILE__

ファイルのフルパスとファイル名。サーバー上での絶対パスです。webでの表示上の絶対パスではないので注意です。

__DIR__

そのファイルの存在するディレクトリ。もちろんこれもwebでの表示上の絶対パスではありません。

basename()関数

basename( ファイルパス [, 接尾語 ] )

パスの最後にある名前の部分を返します。あくまでパスの最後にある部分なのでファイル名が含まれていないパスの場合にはフォルダ名が返ってきます。

pathinfo()関数

pathinfo( ファイルパス [, オプション ] )

ファイルパスに関する情報を返します。オプションを指定することでファイル名の他、ディレクトリパスやファイル拡張子などを取得することもできます。

PATHINFO\_DIRNAME → ディレクトリパス
PATHINFO\_BASENAME → ファイル名(拡張子付き)
PATHINFO\_EXTENSION → 拡張子
PATHINFO\_FILENAME → ファイル名(拡張子無し)(PHP 5.2.0 以降)

 

自分のファイル名を取得する場合は basename($_SERVER[‘PHP_SELF’]) をよく使っていたのですが、pathinfo($_SERVER[‘PHP_SELF’], PATHINFO_BASENAME) という書き方もできるということですね。でもどういう風に使い分けるのかはよくわかりません…