如何让我的 OpenCart 客户在一段时间不活动后注销?
How do I make my OpenCart customers logout after a period of inactivity?
我们有一个 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() 中的 session.gc_maxlifetime 输出均显示 1440(24 分钟)。
因此客户要么在 30 分钟或 24 分钟后注销。无论哪种方式,我都希望客户在一段时间不活动后注销。我该怎么做?
最好的添加方法是使用使用当前时间设置的会话。
注意:最好创建一个 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();
}
我对 进行了一些修改,使其符合我的需要
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();
}
以上代码已放置在 system/library/customer.php 文件(使用 vqmod)中以下行 if (isset($this->session->data['customer_id'])) {
以下代码是否适合 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>
<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/
我们有一个 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() 中的 session.gc_maxlifetime 输出均显示 1440(24 分钟)。
因此客户要么在 30 分钟或 24 分钟后注销。无论哪种方式,我都希望客户在一段时间不活动后注销。我该怎么做?
最好的添加方法是使用使用当前时间设置的会话。
注意:最好创建一个 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();
}
我对
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();
}
以上代码已放置在 system/library/customer.php 文件(使用 vqmod)中以下行 if (isset($this->session->data['customer_id'])) {
以下代码是否适合 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>
<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/