有关于PHP登录脚本
问题描述:
下面这段代码有一个问题,有些问题..有关于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'。
我该如何解决这个问题?
答
首先,尝试将标题更改为不同的重定向。条件的哪部分失败?如果$_SESSION['id']
未正确设置,它将重定向到相同的网址,因为当用户没有适当的权限时它将重定向到。改变其中一个将会告诉你当你遇到这种行为时执行的部分。
其次,来自Barth的评论是有帮助的。 if(!($activated == 2 || $activated == 2))
评估看起来不正确。您正在评估(不)2或2.
第三,记录您的会话数据,并比较重定向发生时的情况。
'if(!($ activated == 2 || $ activated == 2)){'。我想你必须用“3”替换一个“2”。 – 2014-12-09 11:29:48
与2和1我猜。无论如何,如果if语句的一部分重定向到相同的页面提到 – black 2014-12-09 11:31:02
愚蠢的问题,但你确定你的意思是$行[1]而不是$行[0],为什么你检查$激活== 2两次与OR '||'之间? – RobP 2014-12-09 11:31:59