【发布时间】:2014-12-24 02:29:25
【问题描述】:
我被困住了。我想显示不同的菜单选项,无论用户是普通用户、半管理员还是主管理员。在用户登录时的身份验证中,我设置了一个 $_SESSION['login'] 后跟一个数字,稍后我将使用它。
if ($num_rows > 0) {
if ($username == "KP") {
session_start();
$_SESSION['login'] = '4';
header("Location: Index.php");
} else if($username == "FH"){
session_start();
$_SESSION['login'] = '3';
header("Location: Index.php");
} else{
session_start();
$_SESSION['login'] = '1';
header("Location: Index.php");
}
} else {
$errorMessage = "Error";
return $errorMessage;
}
所以根据用于登录的用户名,它会给出一个特殊的会话编号,对吗? 1是普通会员,3是co-admin会员,4是main-admin。
在我的菜单中,当用户登录时,我想为管理员显示特殊功能。
<?php elseif (isset($_SESSION['login'])) : ?>
<li class="separator"></li>
<li><a href="#Web-Menus" class="arrow">Profile / Logout</a>
<div class="drop decor3_2 dropToLeft" style="width: 460px; height: 240px;">
<div class='left'>
<b>Profile</b>
<div>
<a href="#">Profile</a><br/>
<a href="#">#</a><br/>
<a href="#">#</a>
</div>
</div>
<div class='left'>
<br/>
<div>
<a href="Logout.php">Logout</a><br/>
</div>
</div>
<?php if($_SESSION['login'] == 4) : ?>
<div class="left">
<div>
<a href="#">Session4 KP</a><br/>
<a href="#">Session4 KP</a><br/>
<a href="#">Session4 KP</a>
</div>
</div>
<?php endif; ?>
<?php if($_SESSION['login'] == 3) : ?>
<div class="left">
<div>
<a href="#">Session3 FH</a><br/>
<a href="#">Session3 FH</a><br/>
<a href="#">Session3 FH</a>
</div>
</div>
<?php endif; ?>
</div>
</li>
<?php endif; ?>
如您所见,对于会话编号为 4 的用户 KabelPlus,菜单中应该有一些额外的事情要做,但如果 $_SESSION['login'] != 3 或 4 则不会出现的事情。
我的问题是,即使我以 KP 或 FH 身份登录,菜单中的 ekstra 链接也不会出现。这有什么问题?
【问题讨论】:
-
返回
$_SESSION['login']看看它是否返回了您想要的号码。或者您可以通过浏览器查看。 -
也许问题出在您的
elseif在您看来<?php elseif (isset($_SESSION['login'])) : ?>检查这是否是您的问题,就像user3278616 所说的在屏幕上打印您的登录号码。 -
在这个 elseif 语句之前,我有一个语句说,如果没有 session['login'],菜单中的两个机会是 CreateUser/Login。那行得通:)我在这个页面上也有 session_start() 以及所有其他页面:)