场景是我在这个网站上有不同的访问级别,我有一个简单的登录过程适用于所有有效用户,但是我现在正试图将不同的用户分别用于对页面的不同访问。
这是我页面开头的代码:
// 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)登录的用户仍然可以查看此页面。
请帮忙。 非常感谢,答案 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");
}
我希望对你有用。