【发布时间】:2020-03-11 04:58:07
【问题描述】:
我正在尝试验证客户的会员级别。我检查了两个会话变量;客户用户名及其成员级别。
我想要发生的事情:
- 如果用户的会员级别与级别 3 不匹配,则他们将被引导回登录页面。
实际发生的情况:
- 当我以不符合会员级别 3 的用户身份登录时,他们仍然可以看到内容。
(这两个变量都是在用户登录时设置的,我已经验证了两个会话变量都是字符串。)
这是我目前拥有的:
<?php
session_start();
if (!isset($_SESSION['username']) && $_SESSION['level'] == "3") {
$_SESSION['msg'] = "You have an incorrect membership level";
header('location: ../auth/client_login.php');
}
?>
我是否遗漏了一些简单的东西,或者这是检查两个会话变量的错误方法?提前感谢您的宝贵时间。
【问题讨论】:
-
检查 $_SESSION['username'] 值或打印整个 print_r($_SESSION)。调试实际出了什么问题会很容易。
-
“使用两个会话变量进行身份验证” - 关于那个;您确实意识到
if (!isset($_SESSION['username'])会检查它是否 not 设置,对吗?然而,想要同时检查这是否等于“3”$_SESSION['level'] == "3"。这两个条件似乎自相矛盾。 -
@FunkFortyNiner si 如果未设置用户名,请检查一端,然后检查级别是否为 3 如果您想分别测试这两个条件,我建议运行 or 条件或替换 !isset 到只是isset
-
@ShubhamAzad - 谢谢你的建议 - 这很有帮助
-
@nick_halden 不客气。
标签: php authentication session