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


Check whether a PHP session exists or expired using AJAX

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

    ini_set("session.gc_maxlifetime", 600);

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

问候

对于#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");
     }
 });

每次检查时,影子向导关于保持会话有效性的评论都是正确的。

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

为了使上述功能发挥作用,您应该手动实现会话超时。你可以阅读这个关于如何设置会话持续时间的有用答案。

希望这能帮助你或任何正在寻找同样东西的人!