检查会话ID的会话状态

时间:2013-09-27 10:37:17

标签: php session

我正在尝试开发一个聊天应用程序,我需要知道其他用户是否处于活动状态。我已经通过了“timestamp”示例(如果最后一个活动超过指定时间,则将用户视为脱机)和这种方法的问题是这个代码需要通过javascript定期重复执行。

所以,我认为如果有任何方法可以通过了解会话ID来检查服务器中的会话是否处于活动状态。如果可能,我在MYSQL表中为“最后一个会话ID”创建一个额外的列我会在每次发送邮件时检查它是否处于活动状态或关闭状态,并且我可以确定另一方的人是否处于活动状态。

2 个答案:

答案 0 :(得分:0)

您必须检查保存服务器会话信息的文件 - >但这不是一个好主意。在我看来,更好的方法是重写默认会话系统,并在数据库中处理它们(保持session_id,last_action,expire_date)。从这一点来看,完成Yor任务很容易。

答案 1 :(得分:0)

您可以使用ajax和php:

进行此操作

所以你必须在javascript中设置setInterval:

setInterval(function() {
 $.ajax({
 url: 'ajax.php',
 params:{
  action:'checkSessionTime'  
 },
  success: function(response) {
   var resp = JSON.parse(response.responseText);
   if(resp.state != 'valid')
   {
  location.reload();
    }
 }
  });
  }, 1000 * 60* 10);

在PHP中你有这样的函数:

function checkSessionTime(){
if($_SESSION['YourSessionId oder YourUserId']){
 echo json_encode(array('success' => true, 'state' => 'valid'));
}else{
echo json_encode(array('success' => true, 'state' => 'expired'));
}

}