下面的代码有问题。
<?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。
第三,记下您的会话数据,并比较何时发生重定向与何时不发生重定向。