此网页有一个重定向循环ERR_TOO_MANY_REDIRECTS

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`

Joh*_*nde 7

您有一个基本的逻辑错误.您正在尝试在页面加载时运行此代码但尚未提供任何$_POST值,因为尚未提交任何表单.所以你的查询失败了.由于您的代码表示如果查询没有找到任何行,则返回此页面,循环将重新开始.

要解决此问题if,请将所有此代码包装在一个语句中,以检查表单是否已提交.您可以检查$_SERVER包含调用的超全局和调用的密钥REQUEST_METHOD,它将告诉您是否通过POST请求页面(通常在提交表单时)或GET(在"典型"页面加载时常见).如果它的值是"POST",则表单已提交,您可以处理数据,如果没有,则忽略该代码.

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // your code goes here
}
Run Code Online (Sandbox Code Playgroud)

仅供参考,您对SQL注入持开放态度