首页 > 解决方案 > 为什么我的 $_SESSION['user_login'] 没有更改为 true?

问题描述

在 index.php 中

<?php
  session_start();
  $_SESSION['user_login'] = false;
}
?>

<li>
    <div style="margin-left: 15px ;margin-right:15px ; text-align: center">
       <?php
       if (!$_SESSION['user_login']){
           echo '<a href="View/login.php" class="btnprofile" style="background-image:url(./img/defaullt_profile.jpg)" ></a>';
       }
       else{
           echo '<a href="View/profile.php" class="btnprofile" style="background-image:url(coba.jpg)" ></a>';
       }
       ?>
     </div>
</li>

在 login.php 中

看看 $cekrole == 'member'

<?php
include_once '../Dao/UserDaoImpl.php';
include_once '../Entity/USER.php';
include_once '../util/PDOUTIL.php';
session_start();
$loginPressed = filter_input(INPUT_POST, 'btnLogin');
if (isset($loginPressed)) {
    $userDao = new UserDaoImpl();
    $username = filter_input(INPUT_POST, 'txtUsername');
    $password = filter_input(INPUT_POST, 'txtPassword');
    $md5Password = md5($password);
    $userLogin = new User();
    $userLogin->setUsername($username);
    $userLogin->setPassword($md5Password);
    /* @var $arrResult User */
    $arrResult = $userDao->login($userLogin);
    $longname = $arrResult['longname'];
    $email = $arrResult['email'];
    $gender = $arrResult['gender'];
    $dateofbirth = $arrResult['dateofbirth'];
    $cekrole = $arrResult['role'];
    $profile = $arrResult['profile'];
    if (isset($arrResult) && !empty($arrResult['name'])) {
        if ($cekrole == 'admin') {
            $_SESSION['user_login'] = TRUE;
            $_SESSION['user_name'] = $arrResult['username'];
            header('location:homeadmin.php');
        } elseif ($cekrole == 'employee') {
            $_SESSION['user_login'] = TRUE;
            $_SESSION['user_name'] = $arrResult['username'];
            $_SESSION['namauser'] = $username;
            header('location:homeemployee.php');
        } elseif ($cekrole == 'member') {
            $_SESSION['user_login'] = TRUE;
            $_SESSION['user_name'] = $arrResult['username'];
            $_SESSION['profile'] = $profile;
            $_SESSION['longname'] = $longname;
            $_SESSION['email'] = $email;
            $_SESSION['dateofbirth'] = $dateofbirth;
            $_SESSION['gender'] = $gender;
            header('location:../index.php');
        }
    }
    else{
        $message = 'Id atau Password salah';
        echo "<script type='text/javascript'>alert('$message');</script>";
    }
}
?>

有人可以帮助我:(,请查看 login.php 并查看角色 == 成员的时间

为什么当登录为 true 并将 session['user_login'] = TRUE 和 header 设置为 index.php,但 index.php 中的 session['user_login'] 仍然 FALSE

对不起我的英语太糟糕了:D

标签: javascriptphpjquery

解决方案


<?php
    session_start();
    if (!isset($_SESSION['user_login'])) { //if session doesn't exist, set user_login to false
        $_SESSION['user_login'] = false;
    }
?>

因此,当会话尚不存在或用户未登录时,$_SESSION['user_login'] = false否则 $_SESSION['user_login'] 为真,您可以继续您的工作流程。


推荐阅读