之间的区别:$_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 2012中插入记录INSERT后面+INTO与不+之间有啥区别?
Nuxt 2.14 通用模式下的 target: 'static' 和 target: 'server' 之间的真正区别是啥?