我总是可以测试一下,但我想要一位PHP专家的正式答案(我肯定不会这样做)。
如果有人提出这样的请求:
http://www.somedomain.com/a.php?param1=value1¶m2=value2¶m3=value3?param1=value4¶m2=value5¶m3=value6
例如,当我尝试访问_GET['param2']
时会出现什么样的后果?看起来我只是得到第一个值。在这种情况下,它将返回value2
。这是预期的行为吗?
第二个问号会影响什么吗?例如,会出现错误吗?
答案 0 :(得分:3)
它只是定义了最后一个。在查询字符串中多次定义参数只会冒可能导致混淆结果的风险。最好在这些实例中验证您的查询字符串,至少是 I 所做的。
第二个问号将被视为其前一个参数的值的一部分。
答案 1 :(得分:2)
正式来说,你不应该在查询字符串中有两个?
。如果这样做,结果是不确定的。某些平台(例如PHP)会将后续?
个字符视为与&
个字符相同,并允许这些值/对。其他人只会将param3
的值视为value3?param1=value4
。
简答:不要这样做。它变得不稳定。并且,作为服务器作者,应该始终仔细验证参数值,以确保值有意义。