Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-防止页面在每个请求中加载一次以上_Php - Fatal编程技术网

PHP-防止页面在每个请求中加载一次以上

PHP-防止页面在每个请求中加载一次以上,php,Php,在我的脚本中,我向mysql插入了一些数据: $query = "INSERT INTO recent_queries (`type`, `fetched`, `expires`) VALUES ('$type', '$fetched', '$expires')"; $mysqli->query($query); 它很好用。将向数据库中添加一个新行。每次刷新页面时,都会添加一行。但是,如果复制URL,打开一个新选项卡,将URL粘贴到地址栏并转到页面,则会添加两个新行 有时我注意到一次页面

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

$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
 }