如何在 php 或 processmaker(BPM) 中进行会话超时?
我参考了大多数论坛和维基,但这并没有解决我的问题。
请告诉我。
在 ProcessMaker 上,您必须更改php.ini上的以下参数才能修改会话超时
这适用于版本2.5RC1(Release Candidate),可在ProcessMaker sourceforge 页面上下载
希望这也对您有所帮助。
存储用户最后一次发出请求的时间
<?php
$_SESSION['timeout'] = time();
?>
在随后的请求中,检查他们多久以前提出过他们的上一个请求(本例中为 10 分钟)
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
从这里提取
在 php 脚本的开头包含此代码:
<?php
if(!isset($_SESSION)){@session_start();}
if (isset($_SESSION['timeout']) and $_SESSION['timeout'] + 1800 < time()) {
session_unset();
session_destroy();
} else {
$_SESSION['timeout'] = time();
}
?>
第一行检查是否有会话,如果没有会话则创建它。
session_start() 前面的@ 符号是为了抑制 session_start() 可能抛出的任何警告或通知。这段代码根本没有什么重要的,你可以删除它。
下一行检查 $_SESSION['timeout'] 变量是否存在,以及它是否包含从当前时间到过去 30 分钟以上的值。
第一次运行脚本时它不会存在,因此如果您在它不存在时检查它的值,如果在您的 php.ini 文件中启用了它,它将给您一个通知或警告消息。
如果它不存在,我们跳到 else 并创建它,然后添加当前 time()。
现在 1800 的值是以秒为单位的 30 分钟。30 * 60 是另一种常见的写法,以使其更易于阅读。
如果 if 为真,则用户已超过 30 分钟处于非活动状态。如果小于 30 分钟或脚本第一次运行,它将跳到 else 并更新超时变量。