我有一个表单,其中用户输入一些详细信息,然后单击保存按钮将数据保存在数据库中。现在点击保存,如果我刷新页面浏览器请求重新发送。如果我们重新发送它,那么重复数据库中可用的条目。我的数据库插入过程在同一页面上。在单页上完成处理后是否可以防止重新发送?
提前谢谢
答案 0 :(得分:1)
一种方法是通过在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 :(得分:0)
没有。向表单添加一个隐藏字段,用于唯一标识事务,如果看到相同的事件,则拒绝更新。
那,或者预先形成重定向到另一个页面,以便将其转换为GET请求。
答案 2 :(得分:0)
您可以在使用insert
header("Location: somepage.php")
后重定向用户
你可以(我认为应该)在数据库中使用唯一约束(例如对于Postgres:CONSTRAINT c_name UNIQUE (field_name)
)