2014-12-09 96 views
-1

下面这段代码有一个问题,有些问题..有关于PHP登录脚本

<?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 ['id']来存储用户的ID。
此会话变量用于检查用户是否已登录。

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

我该如何解决这个问题?

+1

'if(!($ activated == 2 || $ activated == 2)){'。我想你必须用“3”替换一个“2”。 – 2014-12-09 11:29:48

+0

与2和1我猜。无论如何,如果if语句的一部分重定向到相同的页面提到 – black 2014-12-09 11:31:02

+0

愚蠢的问题,但你确定你的意思是$行[1]而不是$行[0],为什么你检查$激活== 2两次与OR '||'之间? – RobP 2014-12-09 11:31:59

回答

0

首先,尝试将标题更改为不同的重定向。条件的哪部分失败?如果$_SESSION['id']未正确设置,它将重定向到相同的网址,因为当用户没有适当的权限时它将重定向到。改变其中一个将会告诉你当你遇到这种行为时执行的部分。

其次,来自Barth的评论是有帮助的。 if(!($activated == 2 || $activated == 2))评估看起来不正确。您正在评估(不)2或2.

第三,记录您的会话数据,并比较重定向发生时的情况。