PHP请求具有多个查询字符串

时间:2012-09-25 04:32:27

标签: php url

我总是可以测试一下,但我想要一位PHP专家的正式答案(我肯定不会这样做)。

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

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

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

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

2 个答案:

答案 0 :(得分:3)

它只是定义了最后一个。在查询字符串中多次定义参数只会冒可能导致混淆结果的风险。最好在这些实例中验证您的查询字符串,至少是 I 所做的。

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

答案 1 :(得分:2)

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

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