这是我的导航栏中的一些编码。我正在尝试检测是否有用户登录。应该发生的事情是,当有用户登录时,它会显示一个小的下拉菜单,其中包含用户编辑其帐户或注销的选项,但它无效。
<?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();
?>
答案 0 :(得分:0)
您设置$ _SESSION ['username']变量的那一刻,您在if(isset($ _ SESSION ['username'])!=“”)的测试将始终执行,因为该变量已设置。 对于我的登录过程,我通常有一个doLogin.php脚本,它根据数据库对用户进行身份验证,如果身份验证通过,它会设置必要的$ _SESSION变量。如果失败,则设置$ _SESSION ['loginAttemptCount']变量,并取消设置$ _SESSION ['username']和相关变量。
这样,每个PHP页面只执行if(isset($ _ SESSION ['username']))测试并相应地配置自己。
希望有所帮助。
答案 1 :(得分:0)
正常过程是:
登录脚本在会话中创建了一些内容
想知道用户是否已登录的脚本,请在会话中检查该值。
的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放入变量也是一个更好的想法,然后当你调用函数时,你可以选择添加到函数结果中,或者直接回显它,甚至可能修改它。 / p>