当前位置: 移动技术网 > IT编程>开发语言>PHP > php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别

php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别

2019年05月04日  | 移动技术网IT编程  | 我要评论

天涯客 priest,在线经营小游戏,爸爸请你不要在摸了

“php_self”
当前正在执行脚本的文件名,与 document root 相关。举例来说,在 url 地址为 //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-system來,但是程序的config並沒有問題,查了查資料才發現是script_name和php_self不同造成的問題。
通常在本機測試 $_server['script_name'] 跟 $_server['php_self'] 大概看不出有什麼不同,因為大部分的php不是以cgi模式運行的。
但 dreamhost 上的 php 是以 cgi 方式運行,二者就有明顯不同的差異。
echo $_server['script_name']; // (/cgi-system/php.cgi)
echo $_server['php_self']; // (/admin/test.php)

从http://lists.nyphp.org/pipermail/talk/2005-july/015339.html 发现了一个说明。老外说的。

script_name solves all the problems mentioned
in this thread - it's just the script name, without any extra garbage
that might be tacked on by the user. php_self explicitly includes that
extra garbage, so solutions in this thread that involve stripping the
garbage off of php_self to make it safe are really, really missing the
point - just use script_name instead. please don't use form action=”";
according to the spec, what the browser does with that is undefined, so
even if it works in current browsers, it might not work in future ones

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网