Bou*_*aid 1 php redirect mysqli
这是我的代码,我遇到了问题,它说它有一个重定向循环
<?php
session_start();
require_once("db_connection.php");
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM admins WHERE username='{$username}' AND password='{$password}'";
$result = mysqli_query($connect , $query);
if (isset($result)) {
echo "success";
}
$rows = mysqli_fetch_assoc($result);
if(mysqli_num_rows($result)==1){
$_SESSION['id'] = $rows['id'];
}
if(mysqli_num_rows($result)!=1 || !isset($rows['id'])){
header("location: login.php");
}
?>
Run Code Online (Sandbox Code Playgroud)
当我尝试启动时,它会在浏览器上显示
此网页有重定向循环
ERR_TOO_MANY_REDIRECTS`
您有一个基本的逻辑错误.您正在尝试在页面加载时运行此代码但尚未提供任何$_POST值,因为尚未提交任何表单.所以你的查询失败了.由于您的代码表示如果查询没有找到任何行,则返回此页面,循环将重新开始.
要解决此问题if,请将所有此代码包装在一个语句中,以检查表单是否已提交.您可以检查$_SERVER包含调用的超全局和调用的密钥REQUEST_METHOD,它将告诉您是否通过POST请求页面(通常在提交表单时)或GET(在"典型"页面加载时常见).如果它的值是"POST",则表单已提交,您可以处理数据,如果没有,则忽略该代码.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// your code goes here
}
Run Code Online (Sandbox Code Playgroud)