表单只提交一次

时间:2012-02-22 10:02:52

标签: php forms

  

可能重复:
  Preventing duplicate form submissions

我设置的条件是

if(isset($_POST)){
    //do some action
}

第一次检查条件时,它可以正常工作,但如果用户刷新页面,它会执行第二次操作。我该怎么检查?

5 个答案:

答案 0 :(得分:0)

您可以在数据库中插入或更新后取消设置提交按钮,例如unset($ _ POST ['btn_submit']);

答案 1 :(得分:0)

要防止双重发布,请使用浏览器刷新,请考虑此解决方案。

Preventing duplicate form submissions

http://en.wikipedia.org/wiki/Post/Redirect/Get

答案 2 :(得分:0)

使用the Post-Redirect-Get pattern

  1. 浏览器发出POST请求
  2. 服务器修改数据库并返回重定向响应
  3. 浏览器发出GET请求
  4. 服务器以200响应显示页面
  5. 刷新只会重新加载步骤4中返回的页面,而不重复步骤2.

答案 3 :(得分:0)

通常,表单处理可以分为3个步骤:

  • 显示表格
  • 流程数据
  • 重定向到结果页面(例如,感谢您的页面)

完成重定向以避免在刷新时再次提交表单。 因此,在您的情况下,在处理之后,您可以再次将用户重定向回相同的表单。如果他刷新页面,则表单将不会再次提交,因为浏览器已重定向,最后一个操作是GET请求,而不是POST

要在PHP中进行实际重定向,可以使用header函数:

if(isset($_POST)) {
   ...
   // redirect back to the form
   header("Location: form.php");
}

答案 4 :(得分:0)

在操作成功完成后重定向页面可以解决刷新问题

if(isset($_POST))
{ 
    //  do some action 


// redirect to same page so that values will not get posted again
header("location:samepage.php"); 
}