Php 使session值为空而不是销毁会话()

Php 使session值为空而不是销毁会话(),php,session,redirect,Php,Session,Redirect,下面是我使用会话功能的PHP例程。我有三个网页,分别是login.php、homepage.php、logout.php。 当我在login.php页面中输入正确的密码和用户名时,它会将我重定向到homepage.php。在homepage.php中,它包含一个注销链接。当我单击注销链接时,它将我重定向到login.php。这些功能完全符合我的预期。但我现在的问题是,当我单独打开homepage.php时,它应该将我重定向到login.php。但它会打开homepage.php。我需要一个确切的

下面是我使用会话功能的PHP例程。我有三个网页,分别是login.php、homepage.php、logout.php。 当我在login.php页面中输入正确的密码和用户名时,它会将我重定向到homepage.php。在homepage.php中,它包含一个注销链接。当我单击注销链接时,它将我重定向到login.php。这些功能完全符合我的预期。但我现在的问题是,当我单独打开homepage.php时,它应该将我重定向到login.php。但它会打开homepage.php。我需要一个确切的条件,让homepage.php在login.php中提交正确的数据时只打开homepage.php。否则,当我直接打开homepage.php时,它会将我重定向到login.php。但最重要的是我不需要破坏会话,但我可以将会话值作为空值

$\会话['sumthing']=''

希望你能理解我的问题。提前谢谢

登录页面

<?php 
    include("includes/config.php");
    if ($_POST['frmSubmit']) {
        $strUserData = doSelectUserDetails($_POST);
        if($strUserData) {
            $_SESSION['SESS_UserId'] = $strUserData['user_id'];
            $_SESSION['SESS_UserName'] = $strUserData['user_name'];
            session_write_close();
            header('Location: homepage.php');
        } else {
            $strMessage = 'User Name or Password is Incorrect!';                                                                    
            $strClass = 'Error';
        }   
    }

?>
<?php
    include("includes/config.php");
    if((!isset($_SESSION['SESS_UserId'])) || (($_SESSION['SESS_UserId']) == '')) {
        header("location: login.php");
        exit;
    }
?>
注意:session_destroy()将重置会话,您将丢失所有存储的会话数据

请改用unset()函数:

if(isset($_SESSION['views'])) {
unset($_SESSION['SESS_UserName']);
unset($_SESSION['SESS_UserId']);
}
主文件:

if((!isset($_SESSION['SESS_UserId'])) || (($_SESSION['SESS_UserId']) == '')) {
    header("location: login.php");
    exit;
} else echo $_SESSION['SESS_UserName'];

我要做的是检查用户是否有会话。如果他们没有重定向到登录页面:

if (session_status() == PHP_SESSION_NONE) {
    header("location: login.php");
}

来源:

为logout.php文件取消设置会话变量,如下所示

  unset($_SESSION['SESS_UserName']);
  unset($_SESSION['SESS_UserId']); 
使用unset从$\u会话全局数组中销毁一个会话元素


如果要销毁当前注册的所有会话变量,请使用session_unset()函数。

不过,用户可以在不登录的情况下进行会话。e、 去亚马逊,开始购物,然后登录购物。对不起,兄弟,我没有收到你的邮件。我应该在哪里使用这个rotine??如果(isset($_SESSION['views']){unset($_SESSION['SESS_UserName']);unset($_SESSION['SESS_UserId']);}这是结束会话的另一种方法
if (session_status() == PHP_SESSION_NONE) {
    header("location: login.php");
}
  unset($_SESSION['SESS_UserName']);
  unset($_SESSION['SESS_UserId']);