我正在使用$_SESSION
来存储Cookie,因为我需要在login.php
上设置某些变量才能在其他地方使用。
登录我的login.php
if(!isset($_SESSION)) {
session_start();
}
$_SESSION['isLoggedIn'] = 1;
$_SESSION['loggedInID'] = $id;
$_SESSION['isAdmin'] = $isAdmin; // 1 for admin, else 0
在我的admin.html
页面上调用admin.js
,该页面会在加载时对admin.php
进行ajax调用。我需要检查登录的用户是否是管理员。
我在admin.php上做了这个。
session_start();
if (!(isset($_SESSION['isAdmin']) && $_SESSION['isAdmin'] != 1)) {
echo 'Not logged in as admin';
}
但现在在我的管理页面上,admin.php保持echo“未以管理员身份登录”;
为什么会这样?
答案 0 :(得分:1)
你需要OR而不是AND:
if (!isset($_SESSION['isAdmin']) || $_SESSION['isAdmin'] != 1) {
现在,如果设置了变量,则第一个条件为false,因此将检查第二个条件。只有满足第二个条件(未以管理员身份登录),您才会看到警告。
答案 1 :(得分:0)
好吧,让我们说isset($_SESSION['isAdmin'] == true
,然后说$_SESSION['isAdmin'] == 1
。所以目前你的if看起来像这样:
if(!(true && 1!=1)) {
...
}
所以你得到
if(!(true && false)) {
...
}
此外,你得到了
if(!(false)) {
...
}
这真的是真的。尝试这样的事情:
session_start();
if (!isset($_SESSION['isAdmin']) || $_SESSION['isAdmin'] != 1) {
echo 'Not logged in as admin';
}
答案 2 :(得分:0)
$ isAdmin = 1
if (!(true && false)) {
echo 'Not logged in as admin';
}
这就是为什么你会得到回声结果未以管理员身份登录
答案 3 :(得分:-1)
在查看变量之前检查变量是否已定义
session_start();
if (isset($_SESSION['isAdmin']) {
if($_SESSION['isAdmin'] != 1) {
echo 'Not logged in as admin';
}
}