避免在PHP页面上重新发送表单
有什么办法可以避免刷新php页面时重新处理表单? 我想在刷新链接到带有插入function的php文件时阻止重新发送表单。 例如,我正在处理每个页面顶部的用户写的一系列笔记,以获得新笔记。 除了明显的创build一个单独的PHP文件头function还有另一种方法来做到这一点?
使用后redirect获取模式 。
- 接受发布请求
- 处理数据
- 发出redirect回应
- 接受获取请求
- 发出200回应
如果您需要显示提交的内容中的数据,请在(例如)您redirect到的URL的查询string中包含行ID或类似内容。
最好的办法是做一个header("location: form.php");
在处理完表格之后再打电话。 这会将您redirect到表单页面,如果刷新,则浏览器将不会重新发送表单数据。
或者,您可以检查您是否已经处理了收到的数据,但是仍然会向您发送警告消息,表明您将重新发送数据。
你可能会这样做,以防万一有人使用后退button,并不小心点击再次提交。
只要在第一次处理表单时设置一些标记,以便稍后检查它并中止重新处理。 会话variables或cookie将正常工作。
您可以将一个随机数放入只允许使用一次的页面中,这样如果您看到相同的随机数,那么您不要插入页面。
处理表单后,我将用户redirect到新页面。
表单是一个POST请求do-something.php
。 我检查input数据,如果它validation我处理数据并执行redirectdo-something.php?somethingdone
。 所以用户可以按F5来重新发送POST请求。