スポンサーリンク

PHPの定義済の変数に サーバ変数 $_SERVER があります。
これで、スクリプト名を取得したり、クエリストリングを取得したり、リファラ、ユーザエージェントといったものが色々取得できます。

PHPのスクリプト名を取得するのに、$_SERVERのPHP_SELFやSCRIPT_NAMEを使ったりするわけですが、なんで同じものがあるのでしょう?

PHP_SELF

PHP_SELFに関するPHPのドキュメントからの抜粋。

現在実行しているスクリプトのファイル名です。ドキュメントルートから取
得されます。例えば、http://example.com/test.php/foo.bar というアドレ
ス上にあるスクリプトでは $_SERVER['PHP_SELF'] は /test.php/foo.bar
となります。 __FILE__ 定数には、カレント(すなわち読み込まれた)ファイ
ルのパスとファイル名が含まれます。 PHP がコマンドラインから実行される場
合、PHP 4.3.0 以降、この変数にはスクリプト名が含まれます。これより前
のバージョンでは、この変数は使用できません。


SCRIPT_NAME

SCRIPT_NAMEに関するPHPのドキュメントからの抜粋。

 現在のスクリプトのパス。スクリプト自身のページを指定するのに有用です。
 __FILE__ 定数には、カレント(すなわち読み込まれた)ファイルのパスとフ
 ァイル名が含まれます。


PHP_SELFとSCRIPT_NAME

var_dump($_SERVER['PHP_SELF']);
echo '<br />';
var_dump($_SERVER['SCRIPT_NAME']);
echo '<br />';
?>


http://foo.bar.com/dev/php/SCRIPT_NAME.php
にアクセスしてみると

string(24) "/dev/php/SCRIPT_NAME.php"
string(24) "/dev/php/SCRIPT_NAME.php"


となります。
同じ値が取得できています。
http://foo.bar.com/dev/php/SCRIPT_NAME.php/

string(25) "/dev/php/SCRIPT_NAME.php/"
string(24) "/dev/php/SCRIPT_NAME.php"


あらあら?

http://foo.bar.com/dev/php/SCRIPT_NAME.php/a/b/c

string(30) "/dev/php/SCRIPT_NAME.php/a/b/c"
string(24) "/dev/php/SCRIPT_NAME.php"

http://foo.bar.com/dev/php/SCRIPT_NAME.php/a/b/%83e%83X%83g
%83e%83X%83gは、「テスト」

string(35) "/dev/php/SCRIPT_NAME.php/a/b/テスト"
string(24) "/dev/php/SCRIPT_NAME.php"


http://foo.bar.com/dev/php/SCRIPT_NAME.php/%20/%20/

string(29) "/dev/php/SCRIPT_NAME.php/ / /"
string(24) "/dev/php/SCRIPT_NAME.php"


サーバ変数$_SERVERの PHP_SELFとSCRIPT_NAMEには、上記のような違いがありますので、注意しましょう。

PHP関連記事
[2008-01-30-2] PHP パフォーマンス empty()と比較演算子==と===のスピード差
[2008-01-29-2] PHPパフォーマンスベンチマーク 後置加算・後置減算($i++, $i--)より前置加算・前置減算(++$i, --$i)が高速
[2008-01-28-2] パフォーマンスのためにPHPのfor文でcountを使うべきではない
[2008-01-28-1] PHP pearのBenchmarkをportsからインストールする
[2008-01-27-2] PHPのオブジェクトの疑似変数$thisをイテレーション
[2008-01-27-1] PHPのオブジェクトのイテレーション
[2008-01-26-2] PHPの不要なモジュールを外してapacheのメモリを減らす方法
[2008-01-21-1] vimでPHPのsetter/getterを適当に置換で作る方法
[2008-01-20-3] PHPのarray_key_existsとissetの違いと注意点
[2008-01-20-2] PHP デザインパターン Iteratorパターン
[2008-01-17-2] PHP config.phpへの不正アクセス
[2007-12-25-2] vim用のPHPの関数辞書ファイル作成方法
[2007-12-24-2] PHPでunix timestampをMySQLのDATETIMEに変換する方法
[2007-12-15-4] PHPのExceptionの種類
[2007-11-18-4] PHPで変数の文字コードを変換する方法
[2007-11-17-2] PHPの文法チェック(syntax)をチェックするスクリプト
[2007-11-10-2] 携帯メールアドレスをチェックする方法

参照しているページ (サイト内): [2013-02-06-1] [2008-01-31-2]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー