以下代码存在问题..
<?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,因此他们应该可以访问。
当用户登录我的网站时,会设置$ _SESSION [&#39; id&#39;]来存储用户的ID。
此会话变量用于检查用户是否已登录。
但是,当我多次运行代码时,有时它会起作用,有时它不会。有时候,它会为用户提供&#39; //代码。部分,有时它只会重定向到我的http://myWebsiteIndex.php&#39;。
我该怎么解决这个问题?
答案 0 :(得分:0)
首先,尝试将标题更改为不同的重定向。有条件的哪一部分失败了?如果未正确设置$_SESSION['id']
,则会重定向到相同的网址,因为当用户没有适当的权限时,网址将重定向到该网址。更改其中一个将显示遇到该行为时执行的部分。
其次,Barth的评论很有帮助。 if(!($activated == 2 || $activated == 2))
评估似乎不正确。您正在为(不是)2或2进行评估。
第三,记下你的会话数据并比较重定向何时发生,而不是重定向。