PHP-防止每个请求多次加载页面

时间:2014-08-09 16:28:01

标签: php

在我的脚本中,我将一些数据插入mysql:

$query = "INSERT INTO recent_queries (`type`, `fetched`, `expires`) VALUES ('$type', '$fetched', '$expires')";
$mysqli->query($query);

工作正常。一个新行添加到数据库中。每次刷新页面时,都会添加一行。但是,如果我复制URL,打开一个新选项卡,将URL粘贴到地址栏中并转到页面,则会添加两个新行。

有时我注意到为一个页面加载添加了三到四行,但很难确定何时发生这种情况。打开新选项卡后,它总是会插入两个新行,因此很容易确定。

为什么页面可能会多次加载,如何防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

每当HTTP请求改变服务器上的信息时,它应该是POST,PUT或DELETE(通常是POST)。这就是通常避免这个问题的方法。

您可能还想查看PDO以避免SQL注入攻击。

答案 1 :(得分:0)

通常isset($ _ POST)用于避免此类情况,您也可以尝试创建变量

$affectedRows = $mysqli->affected_rows;

将值存储在会话变量或其他内容中,或者另一个漫长的方法是创建临时txt文件并在插入之前检查file_exists是否每次都存在。      if($ affectedRows> 0)

 {
 //Do what you want to do
 }else

 {
        Reinsert the Data
 }