在我的页面上,用户提交了一个代码后,脚本在数据库中创建一条新记录。如果在他提交代码后用户点击刷新,它将在数据库中创建一个重复记录。如果他刷新10次,它将使10条记录具有相同的数据...不刷新php页面
有什么方法可以使页面不会刷新第二次?或限制页面刷新次数?可以采用哪些解决方案来避免这种情况?
预先感谢您。
在我的页面上,用户提交了一个代码后,脚本在数据库中创建一条新记录。如果在他提交代码后用户点击刷新,它将在数据库中创建一个重复记录。如果他刷新10次,它将使10条记录具有相同的数据...不刷新php页面
有什么方法可以使页面不会刷新第二次?或限制页面刷新次数?可以采用哪些解决方案来避免这种情况?
预先感谢您。
在将记录添加到数据表之前,使用select query
来检查数据是否存在或不存在于数据表中,并将页面重定向到新页面,例如感谢您或确认插入。
Select id from TABLE where data='".$_POST["data"]."';
....
....
if(empty($rs["id"])){
// insert the data in table;
}else{
// do edit or skip to redirect
}
和Rediret
header("location:thankyou.php");
exit();
这听起来像产生该形式是处理它的同一个PHP脚本。您可能需要考虑设置一个单独的PHP脚本来处理表单。例如:
<form action="action_handler.php" method="post">
然后,在action_handler.php
结束时,你会重定向到原来的页面,如下所示:
header('Location: original_page.php');
记录都保存在数据库中后,使用header()
并重定向到同一页。
检查这个question的答案,也许你可以使用相同的代码。
简单的一个是unset($_POST["data"])
其插入到数据库或尝试后header('location:.')
但是,这不会阻止浏览器重新提交发布数据。 –
当POST数据,你应该始终采用POST /重定向/ GET设置(Wikipedia。这样一来,当用户刷新目标页面处理,除了刷新之外什么也没有发生
重定向方法的最佳方式是使用状态代码303(HTTP Status Codes),它告诉浏览器POST数据已被接收,处理以及用户应该去一个新的'响应'页面,当用户点击“返回”时,他或她会收到一条消息,指出该页面不再可用,或者有效(通过该路线禁用此功能)。
你可以用这个例子来重定向到另一个页面(相当通用的例子,但我有底线的代码,我可以使用):
header("HTTP/1.1 303 See Other");
header("Location: http://www.yourdomain.com/desitnation.php");
你能不能发布您的代码,请 – Satya
使用AJAX W /删除表格数据或使用令牌 – Class
将数据发布到其他页面。插入到数据库后,将流程重定向到原始页面 –