我们有一个OpenCart站点(版本2.3.0.2).当客户登录时,我希望他们在指定时间内处于非活动状态后被强制退出,例如30分钟我观察到,即使客户闲置超过一个小时,他们也永远不会退出.
session.gc_maxlifetime = 3600;
<?PHP
$maxlifetime = ini_get("session.gc_maxlifetime");
echo "max=".$maxlifetime;
echo "<hr>";
PHPinfo();
?>
对于PHPinfo()中的echo和session.gc_maxlifetime,输出显示1440(24分钟).
因此,要么客户在30分钟或24分钟后退出.无论哪种方式,我都希望客户在一段时间不活动后退出.我该怎么做呢?
解决方法:
添加此功能的最佳方法是使用使用当前时间设置的会话.NB:最好根据您使用的Opencart版本创建vqmod或modification section,以免影响Opencart Core.见下面的代码:
if (!isset($this->session->data['CREATED'])) {
$this->session->data['CREATED'] = time();
} else if (time() - $this->session->data['CREATED'] > 1200) { //time in seconds
session_destroy();
$this->logout();
} else if (isset($this->session->data['CREATED'])) {
$this->session->data['CREATED'] = time();
}