2011-04-08 101 views
5
  1. 过期如何设置PHP的会话超时,我试图像下面,但我不认为它的工作原理检查是否PHP会话存在,或使用AJAX

    ini_set("session.gc_maxlifetime", 600);

  2. 如何找出一个php会话是否存在或使用ajax(javascript)过期?

问候

+2

关于第一个但不是第二个的不知道如何:如果您定期发送AJAX请求,则会保持会话正常运行。 – 2011-04-08 19:02:05

+0

@Shadow - 虽然会话被清除,然后重新创建一个新的会话,但技术上为true。他可以使用AJAX来检查特定的值 – Cfreak 2011-04-08 19:10:01

+0

@Cfreak是真实的,但是如果AJAX每分钟发送一次,它就会保持会话永远活着,据我所知。 – 2011-04-08 19:12:04

回答

8

对于#1使用session_set_cookie_params()。 600秒

session_set_cookie_params(600) 

后到期(注意:与常规setcookie功能session_set_cookie_params使用秒,你想让它生活,它不应该是time() + 600这是一个常见的错误)

对于2号只是做一个通过AJAX称为小脚本:

<?php 
session_start() 

if(empty($_SESSION['active'])) { 
    print "Expired" 
} 
else { 
    print "Active" 
} 

?> 

在JavaScript端(使用JQuery)

$.get('path/to/session_check.php', function(data) { 
    if(data == "Expired") { 
     alert("Session expired"); 
    } else if (data == "Active") { 
     alert("Session active"); 
    } 
}); 
2

Shadow Wizard什么Shadow Wizard评论有关保持会话活着每次你做检查是真实的。

但是解决方案很简单。诀窍是以大于会话生存时间的间隔执行AJAX请求。因此,如果您建立15分钟的会话超时时间,则可以通过AJAX每16或更多次进行检查。

为了使上述工作,会话超时是你应该手动实现的。你可以阅读这个有用的answer关于如何设置会话持续时间。

希望这可以帮助你或任何正在寻找相同的人!