捕获查询字符串时$ _SERVER [' REQUEST_URI']的可靠性如何?

时间:2012-10-07 21:05:40

标签: php query-string

根据我的阅读,似乎$_SERVER['REQUEST_URI']赢得总是正确地返回查询字符串,但是有没有人对成功率有很好的认识是什么?对于普通客户来说,它在大多数情况下是否有效?

什么(如果有的话)会导致REQUEST_URI无法填充或不包含查询字符串?

2 个答案:

答案 0 :(得分:6)

你问:

  

什么(如果有的话)会导致REQUEST_URI无法填充?

我能想到的答案:

  1. Web服务器向PHP提供所有$_SERVER值,因此如果服务器不提供它们,则不会设置它们。对于任何体面的Web服务器来说,这都是不太可能的,但这是可能的。

  2. 如果从命令行运行PHP程序,它将没有任何$_SERVER值。 (如果您不担心这一点,请记住,单元测试通常是从命令行运行的,所以如果您遵循最佳实践并编写单元测试就很重要)

答案 1 :(得分:1)

  

什么(如果有的话)会导致REQUEST_URI无法填充?

谷歌搜索似乎表明这是IIS的情况(但那时候的情况可能不是现在):

https://bugs.launchpad.net/xibo/+bug/654536

(有一篇关于IIS修复程序的文章:http://davidwalsh.name/iis-php-server-request_uri

以及“服务器”不是标准 Web服务器的其他情况(例如,调试服务器插件等)。

在不太知名或旧版本的网络服务器(lighthttpd,iPlanet Web Server 7.0)中注意到,但认为是

所以我相信你可以合理地确定变量总是会被填充。当然,最好准备一个非常小的测试脚本,尽早在客户的网站上运行,以便预先警告。