我们有一个OpenCart网站(版本2.3.0.2)。当客户登录时,我希望他们在指定时间内处于非活动状态后被强制退出,例如30分钟我发现即使客户闲置超过一个小时,他们也永远不会退出。
在根目录上的php.ini上,我修改了超时行:
session.gc_maxlifetime = 3600;
我放置了一个info.php文件,其中包含以下代码:
<?php
$maxlifetime = ini_get("session.gc_maxlifetime");
echo "max=".$maxlifetime;
echo "<hr>";
phpinfo();
?>
对于phpinfo()中的echo和session.gc_maxlifetime,输出显示1440(24分钟)。
因此,客户在30分钟或24分钟后退出。无论哪种方式,我都希望客户在一段时间不活动后退出。我该怎么做?
答案 0 :(得分:6)
添加此功能的最佳方法是使用使用当前时间设置的会话。
注意:最好创建一个vqmod或modification section,具体取决于您使用的Opencart版本,以免影响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();
}
答案 1 :(得分:4)
我已经修改了Sphinx's answer以使其按照我的需要工作
if (!isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
} else if (time() - $this->session->data['SESSIONCREATED'] > 1200) { //time in seconds
session_destroy();
$this->logout();
} else if (isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
}
以上代码已放置在以下行if (isset($this->session->data['customer_id'])) {
下面的system / library / customer.php文件中(使用vqmod)
答案 2 :(得分:0)
以下代码是否适合vQmod?
<modification>
<id>Timed Logout</id>
<version>1.0</version>
<vqmver>2.1.6</vqmver>
<author>websiteinc.co.uk</author>
<file name="system/library/customer.php">
<operation error="log">
<search position="after" index="2"><![CDATA[if (isset($this->session->data['customer_id']))]]></search>
<add><![CDATA[if (!isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
} else if (time() - $this->session->data['SESSIONCREATED'] > 1400) { //time in seconds
session_destroy();
$this->logout();
} else if (isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
}
]]></add>
</operation>
</file>
答案 3 :(得分:0)
<modification>
<id>Timed Logout</id>
<version>1.0</version>
<vqmver>2.1.6</vqmver>
<author>Raza Umer</author>
<file name="system/library/customer.php">
<operation error="log">
<search position="after"><![CDATA[if (isset($this->session->data['customer_id'])) {]]></search>
<add><![CDATA[if (!isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
} else if (time() - $this->session->data['SESSIONCREATED'] > 86400) { //time in seconds
session_destroy();
$this->logout();
} else if (isset($this->session->data['SESSIONCREATED'])) {
$this->session->data['SESSIONCREATED'] = time();
}
]]></add>
</operation>
</file>
</modification>
复制以上修改内容并另存为filename.xml并放置在vqmod / xml /
中