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

时间:2014-12-09 11:28:14

标签: 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 [&#39; id&#39;]来存储用户的ID。
此会话变量用于检查用户是否已登录。

但是,当我多次运行代码时,有时它会起作用,有时它不会。有时候,它会为用户提供&#39; //代码。部分,有时它只会重定向到我的http://myWebsiteIndex.php&#39;。

我该怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

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