处理GET请求,但删除查询字符串

时间:2018-10-04 01:22:18

标签: php

我有一些PHP通过查询字符串处理GET请求。处理完该查询字符串后,它将生成一个包含结果的页面。

到目前为止,一切都很好。但是浏览器中的网址会保留查询字符串,例如如果您点击重新加载,它将再次尝试处理GET。

所以我想生成页面,但返回时不带查询字符串。我尝试将header()设置为URL-minus-query,但这会重定向(即重新加载)页面,而不是直接返回。

我认为这是一项常见且简单的任务,但我找不到解决方案...!

2 个答案:

答案 0 :(得分:1)

万一有人碰到这篇文章...

在一般情况下,由于难以更改url服务器端,因此最简单的方法就是将其设为POST或使用AJAX。

更新:但就我而言,这是一个页面,用户可以在其中更改帐户信息,然后将其反映在该页面上。在这种情况下,答案很简单:首先更新数据库,然后重定向到同一页面:parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH)

常规的PHP处理处理其余的事情。

答案 1 :(得分:0)

核心问题是您绝对不能使用GET处理任何东西。 GET应该是安全的,并且刷新应该没有副作用。人们通常通过以下方式解决此问题:

  • 通过POST请求进行一些处理
  • 重定向到“结果”页面。

最正确的重定向状态代码是303 See Other,但框架必须使用302 Found