我有一个简单的PHP表单,如下所示:
<?php
if(isset($_POST['myform']))
// email...
else
// display form
问题是如果我在提交表单后刷新页面,它会被提交两次。 我怎样才能防止这种情况发生?
答案 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
}