【问题标题】:HTTP query string and []HTTP 查询字符串和 []
【发布时间】:2012-10-07 08:21:30
【问题描述】:

PHP 在查询参数名称中使用[] 以确保参数的多次出现都出现在$_GET 超全局变量中。 (否则只有最后一次出现。)(还有其他软件可以做到吗?)

但从RFC 3986(以及其他人)看来,查询字符串中既不允许[ 也不允许]

然而,我对各种浏览器的实验表明,没有浏览器对这些字符进行编码,它们就在 URI 中...

这是现实生活中的实践吗?还是我测试不正确?我在 IIS 7 上使用 PHP 5.3.17 进行了测试。使用 Internet Explorer、Firefox 和 Chrome。然后我比较了$_SERVER['QUERY_STRING']$_GET中的内容。

【问题讨论】:

  • 这个问题来自stackoverflow.com/questions/12920242/…,是在建议将其拆分成更小的问题后提出的。
  • 如果页面具有 .html 扩展名并且仅包含静态 html,会发生什么情况。当您使用 GET 方法提交它时会发生什么?我不认为 PHP 是这里的罪魁祸首。
  • @SabeenMalik 绝对不是 PHP。它的浏览器(似乎)在没有正确编码的情况下发送[]。为什么?它是事实上的标准吗?

标签: php http uri query-string urlencode


【解决方案1】:

这是常见的做法。这是一种将数组传递到后端脚本的方法,适用于 ASP 和 PHP(从未在 ASP.net 上测试过,但在 2004 年左右我使用 ASP 时这是一种常见的做法)。据我所知,除非您使用 javascript 和 .join 或类似的东西,否则没有其他方法可以将数组传递给您的脚本。

您可以查看http://www.thefutureoftheweb.com/blog/use-arrays-with-html-form-inputs 作为参考之一,了解如何在 HTML 表单中使用数组传递到后端。不过,公平地说,大多数时候它们与“POST”而不是“GET”结合使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2011-10-18
    • 1970-01-01
    • 2015-04-09
    • 2019-08-10
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多