1

如何在 php 或 processmaker(BPM) 中进行会话超时?

我参考了大多数论坛和维基,但这并没有解决我的问题。

请告诉我。

4

4 回答 4

2

在 ProcessMaker 上,您必须更改php.ini上的以下参数才能修改会话超时

  • session.gc_maxlifetime
  • session.cache_expire
  • session.cache_limiter

这适用于版本2.5RC1(Release Candidate),可在ProcessMaker sourceforge 页面上下载

希望这也对您有所帮助。

于 2013-04-02T15:07:09.733 回答
1

存储用户最后一次发出请求的时间

<?php
  $_SESSION['timeout'] = time();
?>

在随后的请求中,检查他们多久以前提出过他们的上一个请求(本例中为 10 分钟)

<?php
  if ($_SESSION['timeout'] + 10 * 60 < time()) {
     // session timed out
  } else {
     // session ok
  }
?>

从这里提取

于 2013-02-08T07:46:07.100 回答
1

这在上一篇文章中有很好的解释。请参阅下面的链接PHP 会话超时

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

于 2013-02-08T07:47:01.003 回答
0

在 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 并更新超时变量。

于 2013-02-08T08:01:02.137 回答