这是我导航栏中的一些编码。我正在尝试检测是否有用户登录。应该发生的是,当有用户登录时,它会显示一个小的下拉菜单,其中包含用户编辑帐户或注销的选项,但它不起作用。
<?php
function loggedIn(){
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
if(isset($_SESSION['username'])!="")
{ echo '<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'. $_SESSION['username'] .'<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>';
}else{
echo '<li><a href="#login" data-toggle="modal" data-target="#login" id="loginbtn"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>';
}
}
loggedIn();
?>
设置$_SESSION['username']变量的那一分钟,您的测试在if(isset($_SESSION['username])=")将始终执行,因为变量已设置。对于我的登录过程,我通常有一个doLogin.php脚本,它根据数据库对用户进行身份验证,如果身份验证通过,它将设置必要的$_SESSION变量。如果失败,它将设置一个$_SESSION['loginAttemptCount']变量,并取消设置$_SESSION['username']和相关变量。
这样,每个PHP页面只需执行if(isset($_SESSION['username'])测试并相应地配置自己。
希望能有所帮助。
正常过程为:
-
登录脚本在会话中创建一些东西
-
想要知道用户是否已登录的脚本,请在会话中检查该值。
login.php
<?php
session_start();
// do all your login checks for userid / password
$_SESSION['username'] = $username;
. . . .
any_other.php
<?php
session_start();
function AddForLoggedInUsers(){
if( !empty($_SESSION['username']) ) {
$htm = '<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'. $_SESSION['username'] .'<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>';
}else{
$htm = '<li><a href="#login" data-toggle="modal" data-target="#login" id="loginbtn"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>';
}
return $htm;
}
// other code
echo AddForLoggedInUsers();
将您在函数中生成的html放入变量中也是一个更好的主意,然后当您调用函数时,您可以选择添加到函数结果中,或者直接回显它,甚至可能修改它。