PHP登录验证问题(初学者)

时间:2011-03-22 14:31:29

标签: php

场景是我在这个网站上有不同的访问级别,我有一个简单的登录过程适用于所有有效用户,但是我现在正试图将不同的用户分别用于对页面的不同访问。

这是我页面开头的代码:

// CHECKS IF THE USER HAS LOGGED IN
session_start();

if(!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']){
   header("location:index.php");
}

if(!$_SESSION['mystatus']=='1'){
   header("location:access_error.php");
}

所以基本上我希望这个页面只有在登录时访问级别为1的用户才能访问,但是没有正确的访问级别,请相应地指示它们。

目前,它允许以不同访问级别(例如3)登录的用户仍然可以查看此页面。

请帮忙。

非常感谢,

4 个答案:

答案 0 :(得分:3)

!$_SESSION['mystatus'] == 1将被解释为(!$_SESSION['mystatus']) == 1。由于$_SESSION['mystatus']包含非错误值(如1和3),因此评估为true !true变为false,因此false == 1不匹配。

使用NOT EQUAL运算符(!=):

$_SESSION['mystatus'] != 1

答案 1 :(得分:2)

if(!$_SESSION['mystatus']=='1'){
这样的构造是非常危险的,特别是如果你是PHP的新手,并且没有弄清楚它的运算符优先级规则。

这被解释为“取mystatus会话变量中任何内容的逻辑NOT,并与字符串'1'进行比较。”

你想要的是

if ($_SESSION['mystatus'] !== '1') {

“如果mystatus变量是一个字符串且不等于字符串'1',则评估为true。

答案 2 :(得分:1)

if($_SESSION['mystatus']!='1'){
   header("location:access_error.php");
}

答案 3 :(得分:0)

以下对我有用。设置您自己页面中的访问级别以及数据库中的权限,当用户尝试登录时,您将检索权限并与页面进行比较。

$permission = $_SESSION['PERMISSION']
$access=2; // level of access
if ($permission>$access){
    $_SESSION["pagina"]="yourPage.php";
    header("Location: accessPermission.php");
}

我希望对你有用。