我有一些PHP通过查询字符串处理GET请求。处理完该查询字符串后,它将生成一个包含结果的页面。
到目前为止,一切都很好。但是浏览器中的网址会保留查询字符串,例如如果您点击重新加载,它将再次尝试处理GET。
所以我想生成页面,但返回时不带查询字符串。我尝试将header()
设置为URL-minus-query,但这会重定向(即重新加载)页面,而不是直接返回。
我认为这是一项常见且简单的任务,但我找不到解决方案...!
答案 0 :(得分:1)
万一有人碰到这篇文章...
在一般情况下,由于难以更改url服务器端,因此最简单的方法就是将其设为POST或使用AJAX。
更新:但就我而言,这是一个页面,用户可以在其中更改帐户信息,然后将其反映在该页面上。在这种情况下,答案很简单:首先更新数据库,然后重定向到同一页面:parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH)
常规的PHP处理处理其余的事情。
答案 1 :(得分:0)
核心问题是您绝对不能使用GET处理任何东西。 GET应该是安全的,并且刷新应该没有副作用。人们通常通过以下方式解决此问题:
POST
请求进行一些处理最正确的重定向状态代码是303 See Other
,但框架必须使用302 Found
。