【问题标题】:Is there such a thing as too many variables in a PHP GET request?PHP GET 请求中是否存在太多变量?
【发布时间】:2011-06-21 06:29:27
【问题描述】:

我正在用 PHP 编写一个 Web 应用程序,它基本上是一个模板设计器。用户在表格中输入他们的测量值、颜色等,并在提交时看到预览。所有定义的变量都显示在 URL 中(例如 http://mysite.com/template.php?height=100&width=300&color=blue...)

我有大约 100 个这样的变量,所以不用说生成的 URL 会变得非常混乱。并不是说这有什么问题,但我是 PHP 新手,所以我只是想知道是否有更好的方法来做到这一点?通过 GET 请求传递 100 个变量是否会不必要地减慢浏览器的速度?

【问题讨论】:

  • 您是否注意到您的浏览器运行缓慢?
  • 不。我只是想确保它以后不会在我脸上爆炸。

标签: php forms get


【解决方案1】:

PHP GET 请求中是否存在变量过多之类的问题?

不是直接的,而是一个 URL can be only 2083 characters long in Internet Explorer(绝对是最高 7 的版本,不是 100% 确定 8 和不知道 9)。旧版本的 Opera(我认为是 4kb)和一些 Web 服务器也存在类似的限制。

根据您的用例,考虑将数据存储在会话变量中。

【讨论】:

  • 好吧,我的 opera:config 说“url 的最大长度”:2147483647 - 但旧版本确实是有限的。
  • 您知道 IE 9 预览版中是否存在 URL 限制吗?
  • @Andy E 我不知道,我没有安装它。再看一遍,它可能在 IE 8 中已经放宽了
【解决方案2】:

问题在于某些浏览器只支持固定的 URL 查询大小。

您不能将其作为 POST 发送吗?

查看IE,例如:

http://support.microsoft.com/kb/208427

而一些较旧的客户端或代理实现仅支持最多 255 字节...

【讨论】:

  • 使用 POST 方法,我将如何保存当前设置并稍后返回?使用 GET 很容易复制 url,然后再返回。
  • 好吧,如果您需要保存它们以备后用,您可以使用 SESSION ($_SESSION)。
【解决方案3】:

不,没有最大变量数,但您的 URL 有最大长度。见:

What is apache's maximum url length?

【讨论】:

    【解决方案4】:

    嗯,理论上不会,实际上有些浏览器对 URL 的长度设置了限制。

    Stackoverflow - related thread

    【讨论】:

      【解决方案5】:

      我看到的唯一问题(我遇到过一次)是某些浏览器中存在最大长度限制:http://en.wikipedia.org/wiki/Query_string#Compatibility_issues

      【讨论】:

        【解决方案6】:

        GET 协议并非旨在处理此类请求,因为它们旨在获取静态内容。

        您的内容取决于某些选项,而 POST 在任何情况下都会更有效。

        顺便说一句,你要知道GET协议限制了URL长度,它实际上取决于浏览器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-05
          • 2012-06-29
          • 1970-01-01
          • 2019-08-17
          • 2018-05-13
          • 1970-01-01
          相关资源
          最近更新 更多