我正在创建一个我只希望管理员查看的按钮。每个用户在数据库中都有一个等级,如果等级设置为" a"他们有管理员权限。这适用于其他页面,例如查看"管理面板"页面等,但在这里它不是出于某种原因。即使您未登录,也可以查看特殊按钮。
$viewer = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
$sql33="SELECT * FROM users WHERE username='$viewer'";
$result33 = $mysqli->query($sql33);
$rows33=$result33->fetch_assoc();
if(isset($_SESSION['user']['username']) AND $_SESSION['user']['rank'] == "a" or "p") {
?><a href="deletepost.php?id=<? echo $id ?>"><input type="submit" value="DELETE"></a><?
}
按钮显示无论什么,当我没有登录时,会发生此错误:
Notice: Undefined index: user in /home/parap00per/public_html/view_topic.php on line 62
第62行是我定义$ viewer的位置。
我认为这是因为如果你没有登录就没有会话,但即使我登录的帐户没有管理员访问权限(也没有#&#) 34; a&#34;也&#34; p&#34;)此if语句仍然运行且按钮仍然出现。我有什么不对的吗?我之前在其他页面上使用了$ _SESSION [&#39;用户&#39;]的东西,我需要使用的是包含一个名为common.php的文件,该文件包含在此页面中。
所以我的问题简要说明:为什么这个if语句会运行,即使它不是真的?
答案 0 :(得分:1)
您需要明确地将$_SESSION['user']['rank']
与"p"
和"a"
进行比较:
if(isset($_SESSION['user']['username']) &&
($_SESSION['user']['rank'] == "a" || $_SESSION['user']['rank'] == "p") {
?><a href="deletepost.php?id=<? echo $id ?>"><input type="submit" value="DELETE"></a><?
}
否则,$_SESSION['user']['rank'] == "a"
和"p"
被视为两个单独的表达式。 "p"
评估为真,这不是你想要的。
答案 1 :(得分:0)
尝试使用:
if(isset($_SESSION['user']) && isset($_SESSION['user']['username']) && isset($_SESSION['rank']) && ($_SESSION['rank'] == "a" || $_SESSION['rank'] == "p"))) {?>
<a href="deletepost.php?id=<? echo $id ?>"><input type="submit" value="DELETE"></a><?
}
答案 2 :(得分:0)
在你的if语句中
if(isset($_SESSION['user']['username']) AND $_SESSION['user']['rank'] == "a" or "p")
最后的p将始终为true,因此您必须附上您的语句,如下所示:
if(isset($_SESSION['user']['username']) && (($_SESSION['user']['rank'] == "a") || ($_SESSION['user']['rank'] == "p"))