php script name,【转载】php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别

“PHP_SELF”

当前正在执行脚本的文件名,与 document root 相关。举例来说,在 URL 地址为 http://example.com/test.php/foo.bar的脚本中使用 $_SERVER['PHP_SELF'] 将会得到

/test.php/foo.bar 这个结果。__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名。

“._NAME”

包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。

主要的原因如像:$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['._NAME'];

找到更好的原因是:

今天在Dreamhost上安裝一套PHP程序時發現連接的地址都會多出一個cgi-system來,但是程序的config並沒有問題,查了查資料才發現是._NAME和PHP_SELF不同造成的問題。

通常在本機測試 $_SERVER['._NAME'] 跟 $_SERVER['PHP_SELF'] 大概看不出有什麼不同,因為大部分的PHP不是以CGI模式運行的。

但 DreamHost 上的 PHP 是以 CGI 方式運行,二者就有明顯不同的差異。

echo $_SERVER['._NAME']; // (/cgi-system/php.cgi)

echo $_SERVER['PHP_SELF']; // (/admin/test.php)

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

._NAME solves all the problems mentioned

in this thread - it’s just the . name, without any extra garbage

that might be tacked . 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 ._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 .es

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值