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

“PHP_SELF”

当前正在执行脚本的文件名,与 document root 相关。举例来说,在 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-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

时间: 2024-08-22 19:45:14

php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别的相关文章

PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别

http://www.5idev.com/php/index.php/test/foo?username=hbolive $_SERVER['PHP_SELF'] 得到:/php/index.php/test/foo $_SERVER['SCRIPT_NAME'] 得到:/php/index.php $_SERVER['REQUEST_URI'] 得到:/php/index.php/test/foo?username=hbolive 从该例子可以看出: $_SERVER['PHP_SELF']

[PHP学习教程 - 网络]002.$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]介绍($_SERVER URL Infomation)

引言:在使用原生PHP的时候,对于URL路径的切割,如:域名,查询参数等等的提取,通常绝大多数兄弟会忽略$_SERVER中定义的内置常量的关系,这里为大家讲解一下. 常用的URL请求路径$_SERVER常量包含以下四个API! $_SERVER["SCRIPT_NAME"]  获取当前脚本的路径,如:index.php $_SERVER["PHP_SELF"]  当前正在执行脚本的文件名 $_SERVER["QUERY_STRING"]  获取查

$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]

1.$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 2.$_SERVER["PHP_SELF"] 说明:当前正在执行脚本的文件名 3.$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 4.$_SERVER["REQUEST_URI"] 说明:访问此页面所需的URI 实例: 1.http://blog.snsgou.com/ (直接打开主页) 结果: $_SERVER[

$_SERVER[PHP_SELF] - $_SERVER[SCRIPT_NAME] - $_SERVER['REQUEST_URI']的区别

$_SERVER[PHP_SELF],$_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI']在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的信息. $_SERVER[’PHP_SELF’] http://www.yoursite.com/example/ —– — /example/index.php http://www.yoursite.com/example/index.php —– — /example/index.php http

$_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题

PHP $_SERVER['PHP_SELF'] $_SERVER['PHP_SELF'] 表示当前 php 文件相对于网站根目录的位置地址,与 document root 相关. 假设我们有如下网址,$_SERVER['PHP_SELF']得到的结果分别为: http://www.5idev.com/php/ :/php/index.php http://www.5idev.com/php/index.php :/php/index.php http://www.5idev.com/php/i

PHP的$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案

$_SERVER['PHP_SELF']简介 $_SERVER['PHP_SELF'] 表示当前 PHP文件相对于网站根目录的位置地址,与 document root 相关. 假设我们有如下网址,$_SERVER['PHP_SELF']得到的结果分别为: http://www.php-note.com/php/    :   /php/test.php http://www.php-note.com/php/test.php    :    /php/test.php http://www.ph

PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别

PHP_SELF. SCRIPT_NAME. REQUEST_URI区别 $_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的信息,这里列出一些相关的例子,帮助确定哪些是在你的脚本最适合的. $_SERVER[’PHP_SELF’] http://www.yoursite.com/example/ — – — /example/index.php h

__FILE__ $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['SCRIPT_FILENAME'] 的区别

echo "<strong>"; echo "__FILE__:".__FILE__;echo "<br/>"; echo "PHP-SELF:".$_SERVER['PHP_SELF'];echo "<br/>"; echo "name:".$_SERVER['SCRIPT_NAME'];echo "<br/>"; e

[单选题]一个php文件的地址为c:/apache/htdocs/phptutor/index.php,虚拟主机的地址是c:/apache/htdocs,那么$_SERVER[&#39;PHP_SELF&#39;]应该评价到哪个页面

index.php /htdocs/phptutor/index.php /phptutor/index.php c:/apache/htdocs/phptutor/index.php $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关.$_SERVER['argv'] #传递给该脚本的参数.$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式).$_SERVER['GATEWAY_INTERFACE']