我有一个表单,用户在其中输入一些详细信息,然后单击保存按钮将数据保存在数据库中。现在点击保存后,如果我刷新页面浏览器,要求重新发送。若我们重新发送它,那个么数据库中有可用的重复条目。我的数据库插入过程在同一页上。在单页上完成流程后,是否可以阻止重新发送?
提前感谢
一种方法是通过在PHP代码中添加以下内容来使浏览器的缓存无效:
header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
-
您可以在提交并使用
header("Location: somepage.php")
执行insert
之后重定向用户 -
你可以(我认为应该)在数据库中使用唯一约束(例如,对于Postgres:
CONSTRAINT c_name UNIQUE (field_name)
)
否。在表单中添加一个唯一标识事务的隐藏字段,如果看到相同的字段,则拒绝更新。
或者预重定向到另一个页面,以便将其转换为GET请求。