ホームページ  >  記事  >  php教程  >  PHPの$_SERVER[PHP_SELF]と$_SERVER[SCRIPT_NAME]の違い

PHPの$_SERVER[PHP_SELF]と$_SERVER[SCRIPT_NAME]の違い

WBOY
WBOYオリジナル
2016-06-13 12:22:081142ブラウズ

"PHP_SELF"
ドキュメント ルートに関連する、現在実行中のスクリプトのファイル名。たとえば、URL アドレス http://www.jb51.net/test.php/foo.bar を持つスクリプトで $_SERVER['PHP_SELF'] を使用すると、結果は /test.php/foo.bar になります。 __FILE__ 定数には、現在の (つまり、ファイルを含む) ファイルの絶対パスとファイル名が含まれます。

"SCRIPT_NAME"
現在のスクリプトへのパスが含まれます。これは、ページがそれ自体を指す必要がある場合に便利です。 __FILE__ には、現在のファイル (インクルード ファイルなど) の絶対パスとファイル名が含まれます。

主な理由は次のとおりです: $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

より良い理由は次のとおりです。今日、Dreamhost に PHP プログラムをインストールしたところ、接続されているアドレスに余分な CGI システムが存在することがわかりました。しかし、プログラムの設定には問題はありませんでした。情報を確認したところ、問題の原因は との違いであることがわかりました。 SCRIPT_NAME と PHP_SELF。
ほとんどの PHP は CGI モードで実行されないため、通常、このマシンで $_SERVER['SCRIPT_NAME'] と $_SERVER['PHP_SELF'] をテストしても、違いは見られません。
しかし、DreamHost 上の PHP は CGI モードで実行されるため、この 2 つには明らかな違いがあります。
echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi)
echo $_SERVER['PHP_SELF'] // (/admin/test.php)

http://lists.nyphp.org/pipermail/talk/2005-April/015339.html から説明を見つけました。外国人が言ってた。

SCRIPT_NAME は、このスレッドで言及されているすべての問題を解決します。
これは、ユーザーによって付け加えられる可能性のある余分なゴミを含まない単なるスクリプト名です。
PHP_SELF には、その
余分なゴミが明示的に含まれています。したがって、安全にするために PHP_SELF から
ゴミを取り除くことを伴うこのスレッドの解決策は、実際には
の点を欠いています。代わりに FORM ACTION=”"; 仕様によれば、ブラウザがそれをどのように扱うかは未定義であるため、
現在のブラウザでは動作しても、将来のブラウザでは動作しない可能性があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。