如何实现功能:从php中的其他设备注销

时间:2019-06-02 17:11:10

标签: php session

我想实现“从所有设备而不是我的设备注销”功能。

Log out everywhere, where else I am logged in

以上链接回答了问题。 但是我是PHP的新手,我没有他的指南。

要使用$ _SESSION ['session_id']检查会话表中的session_id,我需要使用Ajax吗?要么 是正确的方法还是有新的实现方式来实现该功能?请 。 。

1 个答案:

答案 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文件

希望这会有所帮助。