【发布时间】:2012-04-09 12:42:17
【问题描述】:
是否应将以下 URL 视为功能等效?
http://example.com/foo?a=&b=
http://example.com/foo?a&b
当我编写的 Drupal 模块的用户将其解析然后重写 URI noticed 时出现这种情况,由于某些底层 PHP 函数的行为方式,该代码有时会导致查询字符串部分以意想不到的方式发生变化。例如:
parse_str("a&b", $values); print http_build_query($values);
a=&b=
这是我应该担心的事情吗?
编辑所以停止抱怨这个问题与另一个问题相似:问题是假设“X 没有值”和“X 的空值”是否等价,而不是“无价值”风格是否安全在语法上是正确的(确实如此)。
【问题讨论】:
-
作为一种意见,是的,这是您应该担心的事情,因为这迟早会以难以调试的神秘方式中断,具体取决于您计划如何使用 a 和 b 查询参数.如果它们将是空的/null,为什么首先要生成它们?更好的方法可能是让服务器脚本检查这些参数是否存在
-
我真的无法控制链接到的任何服务器将要做什么。我基本上只是希望那里有一个编纂的标准,我找不到有人可以指出我,或者,如果失败了,只是一种广泛一致的实施方法。如果我都找不到,那么我可能不得不开始担心和重新发明轮子。