【问题标题】:Disable HTML URL encoding for GET parameter for query为查询的 GET 参数禁用 HTML URL 编码
【发布时间】:2017-10-18 20:01:57
【问题描述】:

我目前正在开发表格布局。 这些表格在 PHP 中使用了分页器和过滤器函数。

所有值都作为 GET 参数传输。

例如,分页器将使用 &limit=20&page=5。 过滤器建立在作为输入字段的表格行之上。 我的意思是每列都有自己的输入字段。

点击提交按钮后,它会通过 GET 将数据传递给自己,因此下一次浏览量将正确查询/过滤数据。

例如,如果我想过滤邮政编码,则 url 将如下所示: &limit=20&page=5&postcode=5

因为我允许 %5% 之类的搜索显示所有邮政编码,其中 5 的结果不仅限于 5。它将显示所有值的任何位置为 5 的数据。

但是,如果我想过滤显示所有结果为 58 的邮政编码,我将输入 %58%。不幸的是,根据 URL 编码,该 URL 不会像预期的那样是 &postcode=%58%。它将是 &postcode=X%。

问题是是否有可能在 URL 中获取正确的值?

问题在于浏览器级别。如果我直接将 URL 从 &postcode=X% 更改为 &postcode=%58% 并按 Enter,Chrome 会立即将其转换为 X%。

也许有可能以某种方式使用元标记、http 标头或 Javascript 等。

我通过 GET 而不是 POST 来做这件事,因为它 - 显然 - 更容易与分页器集成。

对不起,我的英语不好。任何帮助将不胜感激。

非常感谢。

【问题讨论】:

  • 抱歉,我应该说我使用的是 MySQL。完美,我现在就是这样。感谢您的回复!
  • 很高兴成功了!我将评论移至答案

标签: php html url encoding get


【解决方案1】:

您应该转义“%”符号本身(即“%25”)。 PHP 应该足够聪明,可以自动解码。

所以&postcode=%58% 应该变成&postcode=%2558%25,PHP 将对其进行解码,这样$_GET['postcode'] 就是'%58%'

【讨论】:

  • 感谢您的回复,这是一个很好的建议。但是,我使用提到的解决方案作为 billrichards 对我的问题的评论。
【解决方案2】:

在将值插入参数之前,您应该 urlencode 您的值。

不过,总的来说,如果您使用 mysql,我同意 billrichards。

【讨论】:

  • 感谢您的回复,这是一个很好的建议。但是,我使用提到的解决方案作为 billrichards 对我的问题的评论
【解决方案3】:

由于您提到 %% 搜索,我假设您正在使用 MySQL 或其他 SQL 后端来查询数据。在这种情况下,我建议将查询字符串始终格式化为 postcode=58&page=1,并添加一些其他参数来指示它是否应该是 %wildcard% 搜索或完全匹配,如果通配符参数存在,则添加 %%在执行查询时在后端。

【讨论】:

  • 这就是我遵循的解决方案。但是,其他答案也可能提供正确的解决方法。
猜你喜欢
  • 2014-11-15
  • 2018-05-25
  • 2011-09-06
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2016-11-06
相关资源
最近更新 更多