防止表单被提交两次

时间:2010-09-01 00:24:15

标签: php html forms form-submit

我有一个简单的PHP表单,如下所示:

<?php

if(isset($_POST['myform']))
   // email...
else
   // display form

问题是如果我在提交表单后刷新页面,它会被提交两次。 我怎样才能防止这种情况发生?

4 个答案:

答案 0 :(得分:16)

您应该对页面执行REDIRECT,并显示插入数据的消息...以及后退按钮再次转到表单(如果您愿意)...

要使用PHP重定向,请使用header功能:

header('Location: http://www.example.com/');

答案 1 :(得分:3)

在将数据插入确认页面后执行重定向(可以使用header()完成,这应该清除POST数据并允许刷新而不重复内容。

答案 2 :(得分:2)

如果用户有滞后并且他点击提交按钮几次,那么可能使用客户端机制,使用js一旦点击就将提交按钮设置为禁用。但是必须显示大致类似的消息,“发送消息......如果没有响应请重新加载页面并重试”。

答案 3 :(得分:1)

session_start();    
if (!$_SESSION['REQUEST_TYPE_USER_ID'] == $_POST)
{
//your code
//after the success process
    $_SESSION['REQUEST_TYPE_USER_ID'] = $_POST;
}
else
{
// request duplicated
}