2013-05-27 163 views
0

在我的页面上,用户提交了一个代码后,脚本在数据库中创建一条新记录。如果在他提交代码后用户点击刷新,它将在数据库中创建一个重复记录。如果他刷新10次,它将使10条记录具有相同的数据...不刷新php页面

有什么方法可以使页面不会刷新第二次?或限制页面刷新次数?可以采用哪些解决方案来避免这种情况?

预先感谢您。

+0

你能不能发布您的代码,请 – Satya

+0

使用AJAX W /删除表格数据或使用令牌 – Class

+1

将数据发布到其他页面。插入到数据库后,将流程重定向到原始页面 –

回答

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(); 
0

这听起来像产生该形式是处理它的同一个PHP脚本。您可能需要考虑设置一个单独的PHP脚本来处理表单。例如:

<form action="action_handler.php" method="post"> 

然后,在action_handler.php结束时,你会重定向到原来的页面,如下所示:

header('Location: original_page.php'); 
0

记录都保存在数据库中后,使用header()并重定向到同一页。

检查这个question的答案,也许你可以使用相同的代码。

0

简单的一个是unset($_POST["data"])其插入到数据库或尝试后header('location:.')

+2

但是,这不会阻止浏览器重新提交发布数据。 –

0

当POST数据,你应该始终采用POST /重定向/ GET设置(Wikipedia。这样一来,当用户刷新目标页面处理,除了刷新之外什么也没有发生

重定向方法的最佳方式是使用状态代码303(HTTP Status Codes),它告诉浏览器POST数据已被接收,处理以及用户应该去一个新的'响应'页面,当用户点击“返回”时,他或她会收到一条消息,指出该页面不再可用,或者有效(通过该路线禁用此功能)。

你可以用这个例子来重定向到另一个页面(相当通用的例子,但我有底线的代码,我可以使用):

header("HTTP/1.1 303 See Other"); 
header("Location: http://www.yourdomain.com/desitnation.php");