检测用户是否已登录

时间:2016-05-02 15:02:52

标签: php mysql login navbar

这是我的导航栏中的一些编码。我正在尝试检测是否有用户登录。应该发生的事情是,当有用户登录时,它会显示一个小的下拉菜单,其中包含用户编辑其帐户或注销的选项,但它无效。

            <?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();
            ?>

2 个答案:

答案 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>