如果用户已登录,我想更改登录按钮以退出。

时间:2017-12-14 10:08:47

标签: php

这是来自class.user.php的函数login()和is_logged_in()函数。 我使用is_logged_in()来返回我在login()函数上创建的会话。

    public function login($email,$upass) //
{
    try
    {
        $stmt = $this->conn->prepare("SELECT * FROM pelanggan WHERE email_pel=:email_id");
        $stmt->execute(array(":email_id"=>$email));
        $userRow=$stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount() == 1)
        {
            if($userRow['status_pel']=="Y")
            {

                if($userRow['pass_pel']==md5($upass))
                {

                    $_SESSION['userSession'] = $userRow['id_pel'];
                    return true;


                }
                else
                {
                    header("Location: login.php?error");
                    exit;
                }
            }
            else
            {
                header("Location: login.php?inactive");
                exit;
            }   
        }
        else
        {
            header("Location: login.php?error");
            exit;
        }       
    }
    catch(PDOException $ex)
    {
        echo $ex->getMessage();
    }
}


public function is_logged_in()
{
    if(isset($_SESSION['userSession']))
    {
        return true;
    }


}

在login.php中

<?php
session_start();
require_once 'class.user.php';
$user_login = new USER();

if($user_login->is_logged_in()!="")
{
    $user_login->redirect('index.php?modul=login');
}

if(isset($_POST['btn-signin']))
{
    $email = trim($_POST['email_log']);
    $upass = trim($_POST['password_log']);

    if($user_login->login($email,$upass))
    {
        $user_login->redirect('index.php?modul=login');
    }
}
?>

我使用is_logged_in()函数更改此按钮,但它不起作用。我已经使用了其他条件,但它仍然无法正常工作。这两个按钮都没有显示,只有其中一个。

<div class="btnmasuk span1">
                    <?php
                    require_once 'class.user.php';
                    $user_login = new USER();

                    if(!$user_login->is_logged_in()){ // I use false condition
                        echo '<a href="logout.php"><button class="btn btn-danger">Keluar</button></a>';
                    }else{

                        echo '<a href="login.php"><button class="btn btn-primary">Masuk</button></a>';
                    }



                    ?>


                </div>

我该如何解决这个问题?抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

您可以使用if语句检查用户是否已登录:

u_naam可以是登录用户值

<?php
                    if (isset($_SESSION['u_naam'])) {
                        echo '<form action="includes/logout.inc.php" method="POST">
                            <button type="submit" name="submit">Logout</button>
                        </form>';
                    } else {
                        echo '<form action="includes/login.inc.php" method="POST">
                            <input type="text" name="uid" placeholder="Username">
                            <input type="password" name="pwd" placeholder="password">
                            <button type="submit" name="submit">Login</button>
                        </form>
                        ';
                    }
?>

答案 1 :(得分:0)

<强>登录

public function getLogin($user, $pass)
{
    // Your query goes here to get Login info based on given $user and $pass. 
    $_SESSION['user_logged_in'] = true;
}

在代码中显示按钮:

<?php if( $_SESSION['user_logged_in']): ?>
    <!-- show HTML logout button -->
<?php else: ?>
    <!-- show HTML login button -->
<?php endif; ?>

我希望你明白我的意思。您需要根据我上面写的内容优化您的代码。

让我知道!