我是在site.I的管理员想取消设置一个特定的会话,我知道它的会话ID取消设置一个specefic会话中使用的会话ID
的用户只是说出这样
session_id("usernumber");
session_start();
会议假设用户A的用户编号为“123” 我想破坏用户A的所有值,用户A在设置为session_id(“123”)后不会重新生成sessio_id()。
我该如何取消用户A的销毁?
我是在site.I的管理员想取消设置一个特定的会话,我知道它的会话ID取消设置一个specefic会话中使用的会话ID
的用户只是说出这样
session_id("usernumber");
session_start();
会议假设用户A的用户编号为“123” 我想破坏用户A的所有值,用户A在设置为session_id(“123”)后不会重新生成sessio_id()。
我该如何取消用户A的销毁?
无反向ENGINERING会话处理器....
<?php
session_id($_GET['killsid']);
session_start();
session_destroy() || die "failed to kill";
对我而言不适用 – delive
工作正常。虽然,@Hardik Sondagar的代码更适合安全实现。 –
据我所知,唯一受默认会话处理程序支持的方式是使用session_id("usernumber");
模拟用户,然后删除这些值。
你也可以store sessions in a database,这将使这一切都非常简单,但你需要编写自己的会话处理代码。
顺便说一句,会话ID应该是一个很长的随机字符串,你猜不到。使用123
意味着任何匿名访问者都可以使用任何用户凭证轻松登录。
您可以尝试获取session_save_path()(在此目录中存储会话文件)。 使用默认会话名称时,文件名看起来像sess_jgimlf5edugvdtlaisumq0ham5,其中jgimlf5edugvdtlaisumq0ham5是用户会话ID,因此您可以取消该链接,除非您没有权限编辑这些文件。
作品! ($ session_id){ unlink(session_save_path()。'/ sess_'。$ session_id); } – realmag777
$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();
这个很棒。正是我在找的东西,所以你可以踢别人离开系统。 – geilt
快速查看该文档显示:['session_unset()'](HTTP:// WWW。 php.net/manual/function.session-unset.php)。 – Tomalak
女巫方式的用户登录?或者只是打开会话处理程序的网站? – Subdigger
此评论可以帮助你:http://www.php.net/manual/en/function.session-destroy.php#95809 –