在 PHP 登录脚本上遇到一些问题


Having some issues on PHP login script

下面的代码有问题。

<?php
session_start();
include_once("databaseConnect.php"); // This creates $database by mysqli_connect().
if(isset($_SESSION['id'])){ // checking if user has logged in
    $id = $_SESSION['id'];
    $sql = "SELECT * FROM tableName WHERE id = '$id'";
    $query = mysqli_query($database, $sql);
    $row = mysqli_fetch_row($query);
    $activated = $row[1]; // This is where I store permission for the user
    if(!($activated == 2 || $activated == 3)){ // if the user has not enough permission:
        header("Location: http://myWebsiteIndex.php");
    }
    // code for users
}else{
    header("Location: http://myWebsiteIndex.php");
}
?>

我有一个用户有 3 个用于$activated,所以他们应该能够访问。

当用户登录到我的网站时,它会设置 $_SESSION['id'] 来存储用户的 ID。
此会话变量用于检查用户是否已登录。

但是,当我多次运行代码时,有时它有效,有时无效。有时,它会运行"//用户代码"部分,有时它只会重定向到我的"http://myWebsiteIndex.php"。

我将如何解决这个问题??

首先,尝试将标头更改为不同的重定向。条件的哪一部分失败了?如果未正确设置$_SESSION['id'],它将重定向到与用户没有适当权限时重定向到的相同 URL。更改其中一个将向您显示遇到行为时执行的部分。

其次,巴特的评论很有帮助。if(!($activated == 2 || $activated == 2))评估似乎不正确。您正在评估(不是)2 或 2。

第三,记下您的会话数据,并比较何时发生重定向与何时不发生重定向。