7

我总是可以对此进行测试,但我想要一个 PHP 专家的官方回答(我肯定不是)。

如果有人提出这样的请求:

http://www.somedomain.com/a.php?param1=value1&param2=value2&param3=value3?param1=value4&param2=value5&param3=value6

例如,当我尝试访问时会有什么样的后果_GET['param2']?看起来我只是得到了第一个值。在这种情况下,它将返回value2. 这是预期的行为吗?

第二个问号有什么影响吗?例如,会有错误吗?

4

2 回答 2

3

它只是定义了最后一个。在查询字符串中多次定义一个参数只会冒着获得潜在混淆结果的风险。最好在这些情况下验证您的查询字符串,至少就是这样做的。

第二个问号将被视为其前一个参数值的一部分。

于 2012-09-25T04:41:13.480 回答
2

正式地,您不应该?在查询字符串中包含两个。如果你这样做,结果是不确定的。某些平台(例如 PHP)会将后续?字符视为与字符相同&,并允许这些值/对。其他人只会将值视为param3to be value3?param1=value4

简短的回答:不要这样做。它变得不稳定。而且,作为服务器作者,应该始终仔细验证参数值,以确保这些值有意义。

于 2012-09-25T04:44:25.327 回答