我想实现“从所有设备而不是我的设备注销”功能。
Log out everywhere, where else I am logged in
以上链接回答了问题。 但是我是PHP的新手,我没有他的指南。
要使用$ _SESSION ['session_id']检查会话表中的session_id,我需要使用Ajax吗?要么 是正确的方法还是有新的实现方式来实现该功能?请 。 。
答案 0 :(得分:0)
指南正确。我会尽力启发您。
尝试将PHP会话保存在数据库表中。这还将兼作从所有设备创建的所有会话的审核日志。数据库表可能看起来像;
CREATE TABLE IF NOT EXISTS `sessions` (
`sss_id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(11) NOT NULL,
`session` varchar(256) NOT NULL,
`agent` varchar(200) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`hostname` varchar(100) NOT NULL,
`session_start` datetime DEFAULT NULL,
`start_time` datetime NOT NULL,
`end_time` datetime DEFAULT NULL,
`reason` varchar(10) DEFAULT NULL,
PRIMARY KEY (`sss_id`)
) ENGINE=InnoDB;
我添加了'agent'以便您了解所使用的浏览器,并添加了'reason'来指示会话如何结束。所有end_time为NULL的记录表示会话没有结束。
您的PHP脚本应将有关会话的信息记录到此表中。 (对会话保护页面或资源的所有请求都应保存到此表中)。要结束其他会话,您可以使用id_user而不是发出请求的活动会话将end_time添加到所有记录。 SQL语句类似于:
UPDATE sessions
SET end_time = current_time()WHERE id_user ='您的用户ID'AND会话!='正在请求的会话ID';
关于Ajax。 Ajax只是JavaScript。 Javascript在浏览器(客户端)中执行,而PHP在服务器中执行。使用ajax,您可以异步调用服务器上的PHP文件
希望这会有所帮助。