在我的页面上,在用户提交代码后,该脚本在数据库中创建一条新记录。如果在他提交了用户点击刷新的代码之后,它将在数据库中生成重复记录。如果他点击刷新10次,它将使用相同的数据制作10条记录......
有什么方法可以让页面第二次不刷新?或者限制页面可以获得的刷新次数?可以采用哪些解决方案来避免这种情况?
提前谢谢。
答案 0 :(得分:0)
在将记录添加到数据表之前,使用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();
答案 1 :(得分:0)
听起来像生成表单的PHP脚本与处理表单的脚本相同。您可能需要考虑设置单独的PHP脚本来处理表单。例如:
<form action="action_handler.php" method="post">
然后,在action_handler.php
的末尾,您将重定向到原始页面,如下所示:
header('Location: original_page.php');
答案 2 :(得分:0)
将记录保存在数据库中后,使用header()
并重定向到同一页面。
检查此question的答案,也许您可以使用相同的代码。
答案 3 :(得分:0)
将其插入数据库或尝试unset($_POST["data"])
header('location:.')
答案 4 :(得分:0)
在处理POST数据时,您应该始终使用POST / REDIRECT / GET设置(Wikipedia。这样,当用户刷新目标页面时,除了刷新之外没有任何其他事情发生。
重定向方法的最佳方法是使用状态代码303(HTTP Status Codes),它告诉浏览器POST数据已被接收,处理并且用户应该转到新页面'响应'。当用户点击“返回”时,他或她应该收到一条消息,指出该页面不再可用或有效(这会禁用通过该路由进行重新播放)。
您可以使用此示例重定向到另一个页面(相当通用的示例,但我有可以使用的基线代码):
header("HTTP/1.1 303 See Other");
header("Location: http://www.yourdomain.com/desitnation.php");