我是该网站的管理员。我想取消设置特定会话,我知道其会话ID
用户只是像这样说明会话
session_id("usernumber");
session_start();
假设用户A有用户名“123” 我想销毁用户A的所有值,用户A在设置为session_id(“123”)之后不会重新生成sessio_id();
我怎样才能为用户A取消设置。?
答案 0 :(得分:9)
$session_id_to_destroy = 'nill2if998vhplq9f3pj08vjb1';
// 1. commit session if it's started.
if (session_id()) {
session_commit();
}
// 2. store current session id
session_start();
$current_session_id = session_id();
session_commit();
// 3. hijack then destroy session specified.
session_id($session_id_to_destroy);
session_start();
session_destroy();
session_commit();
// 4. restore current session id. If don't restore it, your current session will refer to the session you just destroyed!
session_id($current_session_id);
session_start();
session_commit();
答案 1 :(得分:6)
没有对会话处理程序进行逆向工程....
<?php
session_id($_GET['killsid']);
session_start();
session_destroy() || die "failed to kill";
答案 2 :(得分:3)
您可以尝试获取session_save_path()(在此目录中存储会话文件)。 当您使用默认会话名称时,文件名看起来像sess_jgimlf5edugvdtlaisumq0ham5,其中jgimlf5edugvdtlaisumq0ham5是用户会话ID,因此您可以取消链接此文件,除非您没有编辑这些文件的权限。
答案 3 :(得分:2)
据我所知,使用默认会话处理程序唯一支持的方法是使用session_id("usernumber");
模拟用户,然后删除值。
您也可以store sessions in a database,这会使这一切变得非常简单,但您需要编写自己的会话处理代码。
顺便说一句,会话ID应该是一个你无法猜测的长随机字符串。使用123
表示任何匿名访问者都可以使用任何用户凭据轻松登录。