PHPのスーパーグローバル$_SERVER[]のURL系についてのまとめ
元になるURL例
http://localhost/php/vserv.php/test/foo?a=b
PC上のXAMPP上で起動
ルート:C:\xampp\htdocs
$_SERVER[REQUEST_URI]
ブラウザからのHTTPリクエストで受け取った情報
例:/php/vserv.php/test/foo?a=b
$_SERVER[SCRIPT_NAME]
ルートからのスクリプトファイルまでのURLパス
例:/php/vserv.php
$_SERVER[PHP_SELF]
ルートからのスクリプトファイルまでのURLパス(拡張付き、クエリ無し)
例:/php/vserv.php/test/foo
XSS脆弱性があるのでSCRIPT_NAMEを使用した方が良い。
参考
http://www.phppro.jp/phptips/archives/vol5/3
$_SERVER[SCRIPT_FILENAME]
ローカルのスクリプトファイルパス
例:C:/xampp/htdocs/php/vserv.php
$_SERVER[PATH_TRANSLATED]
スクリプトファイル後の拡張部分をルートからのディレクトリ名にしたもの(?)
例:C:\xampp\htdocs\test\foo
区切りが\になっているのに注意。ローカルの環境に合わせるようだ。
__FILE__
ローカルのスクリプトファイルパス。SCRIPT_FILENAMEと同じだが区切りが\
C:\xampp\htdocs\php\vserv.php
テストソース

サンプル
http://gyunyu.info/test/var_serv.php/abc/xyz?a=b
下3つはまずい情報が入っているので表示はしていません。
分からないのは、この例のようにスクリプトファイル(.php)の後にディレクトリ名を書く必要性ってどんなときだろうか?
どこかで見かけたような気がするのだが・・・忘れた(^^;
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)/鈴木 憲治

¥2,730
Amazon.co.jp
元になるURL例
http://localhost/php/vserv.php/test/foo?a=b
PC上のXAMPP上で起動
ルート:C:\xampp\htdocs
$_SERVER[REQUEST_URI]
ブラウザからのHTTPリクエストで受け取った情報
例:/php/vserv.php/test/foo?a=b
$_SERVER[SCRIPT_NAME]
ルートからのスクリプトファイルまでのURLパス
例:/php/vserv.php
$_SERVER[PHP_SELF]
ルートからのスクリプトファイルまでのURLパス(拡張付き、クエリ無し)
例:/php/vserv.php/test/foo
XSS脆弱性があるのでSCRIPT_NAMEを使用した方が良い。
参考
http://www.phppro.jp/phptips/archives/vol5/3
$_SERVER[SCRIPT_FILENAME]
ローカルのスクリプトファイルパス
例:C:/xampp/htdocs/php/vserv.php
$_SERVER[PATH_TRANSLATED]
スクリプトファイル後の拡張部分をルートからのディレクトリ名にしたもの(?)
例:C:\xampp\htdocs\test\foo
区切りが\になっているのに注意。ローカルの環境に合わせるようだ。
__FILE__
ローカルのスクリプトファイルパス。SCRIPT_FILENAMEと同じだが区切りが\
C:\xampp\htdocs\php\vserv.php
テストソース

サンプル
http://gyunyu.info/test/var_serv.php/abc/xyz?a=b
下3つはまずい情報が入っているので表示はしていません。
分からないのは、この例のようにスクリプトファイル(.php)の後にディレクトリ名を書く必要性ってどんなときだろうか?
どこかで見かけたような気がするのだが・・・忘れた(^^;
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)/鈴木 憲治

¥2,730
Amazon.co.jp