这是我的代码,我遇到了问题,它说它有一个重定向循环
<?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`
答案 0 :(得分:7)
您有一个基本的逻辑错误。您正在尝试在页面加载时运行此代码但尚未提供任何$_POST
值,因为尚未提交任何表单。所以你的查询失败了。由于您的代码会返回此页面,如果查询没有找到任何行,则循环将重新开始。
要修复此问题,请将所有此代码包装在if
语句中,以检查表单是否已提交。您可以查看包含$_SERVER
超级全局和名为REQUEST_METHOD
的密钥,它将告诉您页面是否是通过POST请求的(通常在提交表单时)或GET(在“典型的“页面加载”。如果它的值是“POST”,则表单已提交,您可以处理数据,如果没有,则忽略该代码。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// your code goes here
}
仅供参考,您对SQL injections
持开放态度