使用AJAX检查PHP会话是否存在或过期

时间:2011-04-08 18:59:16

标签: php javascript ajax session

  1. 如何设置php会话时间,我正在尝试如下,但我认为它不起作用

    ini_set("session.gc_maxlifetime", 600);

  2. 如何使用ajax(javascript)查明php会话是存在还是已过期?

  3. 此致

2 个答案:

答案 0 :(得分: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");
     }
 });

答案 1 :(得分:2)

每次进行检查时,Shadow Wizard评论的关于保持会话活动的内容都是正确的。

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

为了使上述工作正常,会话超时是您应该手动实现的。您可以阅读此有用的answer有关如何设置会话持续时间的信息。

希望这可以帮助您或正在寻找同样的人!