刷新浏览器在数据库php中添加重复条目


Refreshing browser add duplicate entry in database - php

我有一个表单,用户在其中输入一些详细信息,然后单击保存按钮将数据保存在数据库中。现在点击保存后,如果我刷新页面浏览器,要求重新发送。若我们重新发送它,那个么数据库中有可用的重复条目。我的数据库插入过程在同一页上。在单页上完成流程后,是否可以阻止重新发送?

提前感谢

一种方法是通过在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" );
  1. 您可以在提交并使用header("Location: somepage.php") 执行insert之后重定向用户

  2. 你可以(我认为应该)在数据库中使用唯一约束(例如,对于Postgres:CONSTRAINT c_name UNIQUE (field_name)

否。在表单中添加一个唯一标识事务的隐藏字段,如果看到相同的字段,则拒绝更新。

或者预重定向到另一个页面,以便将其转换为GET请求。