之间的区别:$_SERVER['SCRIPT_NAME'] 和 $_SERVER['PHP_SELF']

Posted

技术标签:

【中文标题】之间的区别:$_SERVER[\'SCRIPT_NAME\'] 和 $_SERVER[\'PHP_SELF\']【英文标题】:Difference between: $_SERVER['SCRIPT_NAME'] and $_SERVER['PHP_SELF']之间的区别:$_SERVER['SCRIPT_NAME'] 和 $_SERVER['PHP_SELF'] 【发布时间】:2011-09-22 04:20:23 【问题描述】:

有什么区别:

$_SERVER['SCRIPT_NAME']

$_SERVER['php_SELF']

谢谢。

【问题讨论】:

见:***.com/questions/279966/… 您可能还想查看魔术常量 __FILE__ - php.net/manual/en/language.constants.predefined.php 【参考方案1】:

它们应该包含相同的信息。但是,从历史和技术上讲,两者之间是有区别的。

SCRIPT_NAME 在 CGI 1.1 规范中定义,因此是一个标准。这意味着无论您使用哪种脚本语言,它都应该可用。

PHP_SELF是直接用PHP实现的,只要你用PHP编程,它就在那里。

【讨论】:

名称PHP_SELF是PHP独有的,但由于是整个URL路径,实际上是IETF中定义的标准,名称不同。【参考方案2】:

大多数情况下它是相同的,但 $_SERVER['SCRIPT_NAME'] 的欺骗性比 $_SERVER['PHP_SELF'] 低,因此如果您想在输出的某处重用该数据,则应使用 SCRIPT_NAME

检查that article 获得的不同结果。

【讨论】:

无论动态数据的欺骗性如何,您都应该转义输出。 @knittl: 是的,没错,在没有适当转义的情况下重复使用它会是一个安全问题,但如果使用一个容易被欺骗的会更危险。 是的,它更具欺骗性,但只是因为它是整个URL路径(在mod_rewrite之后获得)。所以,这取决于我们需要什么。如果我们只需要 SCRIPT_NAME 部分,那么好的,我们使用它。如果我们需要完整的 URL 路径,我们使用 PHP_SELF,当然,我们不应该信任它——它是 URL 路径。

以上是关于之间的区别:$_SERVER['SCRIPT_NAME'] 和 $_SERVER['PHP_SELF']的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server 2008 - 排序规则类型之间的区别

$_SERVER存储

sql server 2012中插入记录INSERT后面+INTO与不+之间有啥区别?

Nuxt 2.14 通用模式下的 target: 'static' 和 target: 'server' 之间的真正区别是啥?

ASP.NET Core Hosted 和 Server-Side Blazor 之间有啥区别,真的吗?

SQL Server Compact Edition 和真正的 SQL Server 之间的 T-SQL 区别?