远程销毁php中的会话(用户在其他地方登录)?
嘿,我试图让我的php网站基本上“注销”(session_destroy())当同一个用户在其他地方登录时。有没有办法做到这一点?要远程销毁特定会话?
谢谢你们!
斯科特
嘿,我试图让我的php网站基本上“注销”(session_destroy())当同一个用户在其他地方登录时。有没有办法做到这一点?要远程销毁特定会话?
谢谢你们!
斯科特
使用session_id当然是可能的。当用户在其他位置登录时,您可以在为新登录名启动新会话之前执行此步骤:
// The hard part: find out what $old_session_id is
session_id($old_session_id);
session_start();
session_destroy();
// Now proceed to create a new session for the new login
这将破坏服务器端的旧会话,因此当另一台计算机再次访问您的应用程序时,它将尝试访问一个不存在的会话,并将为其创建一个新会话(用户不再登录)。
困难的部分是找出“旧”会话的ID是什么。没有一种放之四海而皆准的方法可以做到这一点。您需要有一些适当的机制,以便能够分辨出ID XXX的会话属于现在登录的同一用户。如果您使用的是数据库会话,这应该很容易。
无需创建自己的会话处理程序。
只需在登录时将带有用户名的会话ID存储在数据库中即可。
每次用户提取页面时,请将该用户的会话 ID 与存储的会话 ID 进行比较。
如果会话 ID 不匹配,则表示用户已登录到其他位置,您应该自毁。