如何在 10 分钟不活动后使 PHP 会话过期? [复制]

Posted

技术标签:

【中文标题】如何在 10 分钟不活动后使 PHP 会话过期? [复制]【英文标题】:How to expire PHP session after 10 minutes of inactivity? [duplicate] 【发布时间】:2018-06-20 13:13:37 【问题描述】:

我是 php 新手,我正在开发一个 Web 应用程序,其中要求如果 10 分钟内没有用户活动,用户应该自动注销并返回到登录屏幕。如何使用 php 或 javascript 实现此目的?

我目前只是在标题页中使用 session_start()。

【问题讨论】:

【参考方案1】:

试试

 ini_set('session.gc_maxlifetime',54000);  
 ini_set('session.gc_probability',1);
 ini_set('session.gc_divisor',1); 

在调用session_start()之前使用它

或者也试试这个

将 time() 存储在 $time 变量中。 之后检查条件,如果 $_SESSION['setTime'] 为空或未设置,则将超时值存储到会话中,否则当页面刷新时,新值将分配给 $_SESSION['setTime']。

    $time = time ();
        $setTime = time () + 60;
        if (empty ( $_SESSION ['setTime'] ) || !isset ( $_SESSION ['setTime'] )) 
            $_SESSION ['setTime'] = $setTime;
   

然后检查当前时间是否大于存储时间。如果它未设置会话。也销毁会话。

if (time () >= ( int ) $_SESSION ['setTime']) 
   session_unset ();
   session_destroy ();

按照how to expire php session if user is inactive for 15 mins

【讨论】:

在每个请求上运行 GC 并不是一个好主意,这很容易影响性能。 这也可以在 php.ini 全局更改

以上是关于如何在 10 分钟不活动后使 PHP 会话过期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 会话在 40 分钟后到期

如果不活动10分钟,我如何使用php上的会话注销用户[重复]

如何由于 Django 中的不活动而使会话过期?

防止会话在非活动用户的 PHP 会话中过期

PHP 会话超时

PHP 如何在X分钟后过期PHP会话?