我想检查一个人是否有活动会话,并在有活动会话时将他们重定向到另一个页面。但是,我不想使用 session_start(),因为这会在用户的 PC 上放置 cookie(我不想在人们未登录时在他们的 PC 上放置 cookie)。有没有办法检查现有会话,而不在他们的 PC 上放置 cookie?
您可以检查会话 ID cookie 是否存在,如果之前已在站点的其他位置设置过该会话 ID cookie,则客户端会将其发回:
if (isset($_COOKIE[session_name()])) {
... most likely there's a session available to be loaded ...
}
为了增加安全性,您可以使用
session_save_path()
和 session_name()
来检查会话文件是否存在(假设您使用的是默认的基于文件的处理程序),以构建传递到 file_exists()
的路径
首先测试一下,但我认为如果有会话,
session_id() != ""
将给出 true,如果没有,则给出 false。
这不是很安全,但是...
通过身份验证后执行此操作
$user_id = 123; // Replace with the actual user ID
$expiration = time() + (30 * 24 * 60 * 60); // Cookie expires in 30 days
setcookie('user_id', $user_id, $expiration, '/', '', true, true);
然后你可以像这样检查他们是否登录了
if (isset($_COOKIE['user_id'])) {
$user_id = $_COOKIE['user_id'];
// Use $user_id as needed
} else {
// User ID not found in cookie, handle accordingly
}