【问题标题】:How to increase the session time in php如何在php中增加会话时间
【发布时间】:2023-03-19 03:37:01
【问题描述】:

在我的 Web 应用程序中,当我尝试通过传递用户名和密码来访问身份验证服务时。以下是处理身份验证的代码。

ini_set("session.cookie_lifetime","7200"); // 120 minutes
ini_set("session.gc_maxlifetime","7200"); // 120 minutes
session_start();
$_SESSION['logged_in'] = true; 
$_SESSION['last_activity'] = time(); /
$_SESSION['expire_time'] = 2*60*60; 
$_SESSION["user_id"]=$user_id;
$_SESSION["username"]=$username;
$_SESSION["accesslevel"]=10;
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$time = time();
header('Location: ../XXXX.php');

在上面的代码中,我试图在session_destroy(); 之前建立 2 小时的不活动状态。但是当我在浏览器中检查 cookie 信息时,到期日期与创建日期相同。

帮我延长cookie时间以实现系统空闲。

Image with the cookie inspector (Where it says "Fecha de caducidad" its the Expire date)

如何实现这一点,请指导我。提前致谢!

【问题讨论】:

    标签: php session cookies session-cookies


    【解决方案1】:

    这些设置在cookie被创建(会话初始化)后没有任何作用

    ini_set("session.cookie_lifetime","7200");
    ini_set("session.gc_maxlifetime","7200"); 
    

    你必须检查会话是否超时:

    if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $_SESSION['expire_time'] )) { 
            session_destroy();
     } // check last activity
    $_SESSION['last_activity'] = time(); // update last activity time
    

    【讨论】:

    • ini_set 参数在 session_start(); 之前设置。我实际上使用了您建议的代码,但是如果用户在短时间内没有刷新或单击页面中的某个位置,则会话会自动结束。
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2014-11-23
    • 2011-01-22
    • 2017-11-26
    • 2023-03-18
    • 2018-06-20
    相关资源
    最近更新 更多