PHP限制错误

时间:2015-08-07 02:58:47

标签: php mysql

如果用户的排名不是经理或管理员,我试图限制用户访问该网页。我创建了一个名为$ rank的变量,它是从我的数据库中的用户表中获取的等级。当我回显页面上的排名时,排名确实等于经理或管理员,但它将我重定向到索引页面,因为它不等于经理或管理员。当我尝试使用此代码时:

if(!isset($_SESSION['userID'])) {
    header("Location: index.php");
}   else if ($rank == "manager" OR $rank == "admin") {

}   else {
    header("Location: index.php");
}

它确实有效,但我觉得这样做是错误的。这是我现在使用的代码,并且不起作用:

$tUsers_Select = "SELECT users.rank, ranks.rank_name FROM users LEFT JOIN ranks ON users.rank = ranks.rank_name WHERE user_id = ".$_SESSION['userID'];

$tUsers_Select_Query = mysqli_query($dbConnect, $tUsers_Select);

$fetch = mysqli_fetch_array($tUsers_Select_Query);

$rank = $fetch['rank'];

if(!isset($_SESSION['userID'])) {
    header("Location: index.php");
}   else if ($rank !== "manager" OR $rank !== "admin") {
    header("Location: index.php");
}

希望你理解。如果您有任何问题,请发表评论。

2 个答案:

答案 0 :(得分:4)

这只是一个逻辑问题。

else if ($rank !== "manager" OR $rank !== "admin") {

如果排名为manager,则它不等于admin。如果是admin,则它不等于manager。所以无论发生什么,你都会重定向到index.php。

OR更改为AND

答案 1 :(得分:0)

首先,我想问你在使用session_start()之前$_SESSION是否已打开? 然后我建议你var_dump $_SESSION['userID']),看看这个可行的是否为空。

更新: 我不确定你的问题,你可以尝试这个: 更改打击代码:

if(!isset($_SESSION['userID'])) {
    header("Location: index.php");
}   else if ($rank !== "manager" OR $rank !== "admin") {
    header("Location: index.php");
}

为:

   if(isset($_SESSION['userID']) AND ($rank == 'manager' OR $rank == 'admin')) {
        header("Location: index.php");
    } 

我认为这可以使您的代码变得简单。