避免在PHP页面上重新发送表单

有什么办法可以避免刷新php页面时重新处理表单? 我想在刷新链接到带有插入function的php文件时阻止重新发送表单。 例如,我正在处理每个页面顶部的用户写的一系列笔记,以获得新笔记。 除了明显的创build一个单独的PHP文件头function还有另一种方法来做到这一点?

使用后redirect获取模式 。

  1. 接受发布请求
  2. 处理数据
  3. 发出redirect回应
  4. 接受获取请求
  5. 发出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请求。