我遇到了会话问题,我尝试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();
答案 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();