会话超时在PHP或Processmaker中

时间:2013-02-08 07:41:36

标签: php session

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

我提到了大多数论坛和wiki,但这并没有解决我的问题。

请告诉我。

4 个答案:

答案 0 :(得分:2)

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

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

这可以从版本 2.5RC1(候选发布版)开始,可以在ProcessMaker sourceforge page上下载

希望这也有助于你。

答案 1 :(得分:1)

存储用户上次发出请求的时间

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

在后续请求中,检查他们提前多久提出请求(本例中为10分钟)

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

摘自here

答案 2 :(得分:1)

这在前一篇文章中有很好的解释。 请参阅PHP Session timeout

下面的链接

How do I expire a PHP session after 30 minutes?

答案 3 :(得分: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 [&#39; timeout&#39;]变量是否存在,以及它是否包含从当前时间开始超过30分钟的值。

第一次运行脚本时它不存在,所以如果在不存在时检查它的值,如果在php.ini文件中启用了它,它会给你一个通知或警告信息。

如果它不存在,我们跳到else并创建它,然后我们添加当前时间()。

现在1800的值是30分钟(秒)。 30 * 60是另一种常见的写入方式,使其更易于阅读。

如果if为true,则用户已处于非活动状态超过30分钟。如果它少于30分钟或第一次运行脚本,它将跳转到else并更新超时变量。