如何正确取消设置$ _SESSION变量?

时间:2016-08-08 17:15:19

标签: php

设置$ _SESSION的登录脚本的一部分:

session_start();
$_SESSION['username'] = '$myuser';
header("location: loggedinonly.php");

退出页面:

<!DOCTYPE html>

<?php
    session_start;
    unset($_SESSION['username']);
    header('location: /phptest');
?>

登录时应该只能看到的页面:

<!DOCTYPE html>

<?php
    session_start();
    if (!isset($_SESSION['username'])) {
        print("NO ACCESS");
    } else {
        print("WELCOME");
    }
?>
<html>
    <head>
        <title>LOGIN PAGE</title>
        <link rel="stylesheet" type="text/css" href="stylesheet.css">
    </head>
    <body>
        You must be logged in to read this!<br>
    </body>
</html>

当我打开一个新会话时,我没有访问权限。但是,如果我登录,然后转到页面,我有访问权限。所有这些都是有意的。但是,当我通过脚本注销时,我仍然可以访问。

我已经尝试了很多,抱歉,如果之前有人问过,我发现搜索没有任何用处。

2 个答案:

答案 0 :(得分:0)

您在单个会话变量上使用unset,因此您仍然可以保留用户登录的内容。尝试使用session_destroy(),它将删除与会话相关的所有数据。

答案 1 :(得分:0)

退出页面:

<?php
if(isset($_SESSION['username'])){
session_start();
session_destroy();
session_commit();
header('Location: phptest.php');
}
?>