如何从访问者浏览器中删除会话

时间:2018-08-29 02:51:16

标签: php

我遇到了会话问题,我尝试unset($_SESSION)session_unset()session_destroy()会话被销毁,但仍显示在浏览器中(cookie扩展)

我想像session_start(['cookie_lifetime' => 10])一样删除它的终结性,但是我不想设置时间,我只想在我的php代码中的某个位置删除它,知道吗?

我的代码在这里:

<?php 
session_start();
$_SESSION['style'] = $style;
echo "Your style is : " . $style;
unset($_SESSION['style']);
session_destroy();

1 个答案:

答案 0 :(得分:2)

存储在浏览器中的会话cookie仅包含对服务器上会话ID的引用,并且不包含任何实际会话数据。所有这些都仅存储在服务器上,如果将其存储在客户端,则实际上将是一个巨大的安全问题。如果您删除服务器上的会话,这将删除服务器上与该会话有关的所有数据,并且任何使用旧会话ID进行重新身份验证的尝试都将失败。如果在会话被销毁后浏览器将旧的会话cookie发送回服务器,则服务器将简单地忽略它。因此,无需从用户的浏览器中删除会话cookie,因为当关闭窗口时,浏览器会自动完成会话cookie。推荐的终止会话的方法很简单:

$_SESSION = array();

但是,无论如何,如果您出于任何原因要手动强制删除Cookie,请执行以下操作:

<?php 
session_start();
$_SESSION['style'] = $style;
echo "Your style is : " . $style;
unset($_SESSION['style']);

if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', -1,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

session_destroy();