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

时间:2015-08-08 01:27:03

标签: 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");
}

?>

当我尝试启动时,它会在浏览器上显示

  

此网页有重定向循环

     

ERR_TOO_MANY_REDIRECTS`

1 个答案:

答案 0 :(得分:7)

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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // your code goes here
}

仅供参考,您对SQL injections

持开放态度