PHP-防止页面在每个请求中加载一次以上
在我的脚本中,我向mysql插入了一些数据:PHP-防止页面在每个请求中加载一次以上,php,Php,在我的脚本中,我向mysql插入了一些数据: $query = "INSERT INTO recent_queries (`type`, `fetched`, `expires`) VALUES ('$type', '$fetched', '$expires')"; $mysqli->query($query); 它很好用。将向数据库中添加一个新行。每次刷新页面时,都会添加一行。但是,如果复制URL,打开一个新选项卡,将URL粘贴到地址栏并转到页面,则会添加两个新行 有时我注意到一次页面
$query = "INSERT INTO recent_queries (`type`, `fetched`, `expires`) VALUES ('$type', '$fetched', '$expires')";
$mysqli->query($query);
它很好用。将向数据库中添加一个新行。每次刷新页面时,都会添加一行。但是,如果复制URL,打开一个新选项卡,将URL粘贴到地址栏并转到页面,则会添加两个新行
有时我注意到一次页面加载会添加三到四行,但很难精确地确定这是什么时候发生的。随着新选项卡的打开,它总是插入两个新行,因此很容易确定
为什么页面会被多次加载,如何防止这种情况发生 每当HTTP请求更改服务器上的信息时,它都应该是POST、PUT或DELETE(通常是POST)。这就是通常避免这个问题的方法 您可能还希望研究PDO以避免SQL注入攻击。通常使用isset($\u POST)来避免此类情况,您也可以尝试创建一个变量
$affectedRows = $mysqli->affected_rows;
将该值存储在会话变量或其他内容中,或者另一种方法是创建一个临时txt文件,并在每次插入之前检查文件_是否存在。
如果($affectedRows>0)
看起来您可能没有使用条件语句或使用头重定向(成功后),从而避免了不必要的代码执行。另外,听起来您使用的是GET方法。您可以将受影响的列设置为
UNIQUE
-显示更多代码;很难给出明确的答案。
{
//Do what you want to do
}else
{
Reinsert the Data
}