php session超时处理

来源:互联网 发布:o2o源码开发 编辑:程序博客网 时间:2024/05/13 08:32

php中session的时间一般是在php.ini中设置的,如果你不愿意在那里设置,参考一下下面的代码。

===超时触发处理事件====
在你设置session的页面中

session_start();
$_SESSION[ 'session_time ']=time();     //这个用来计时
$_SESSIOM[ 'user']= "username";

要检验session是否超时的页面:

session_start();
$timeout=600;     //超时时间,单位:秒,这里设为10分钟.
$now=time();
if(($now-$_SESSION[ 'session_time '])> $timeout)
{
    //超时了.
    unset($_SESSION[ 'user']);
    //在这里写上删除数据的代码
    .......
}else{
    //还没超时.
    $_SESSION[ 'session_time ']=time();
}

 

 === 设置超时时间====

在PHP中没有设置页面Session超时时间的功能。。。在PHP.ini中有两个可以设置Session时间的配置,一个是"session.gc_maxlifetime",默认值是1440(24分钟),这个是Session在多少秒以后被清除。另外一个是"session.cache_expire",默认是180(3小时),这个是文档过期时间,但似乎没有什么作用。

  经过我的经验,可以使用以下方法解决这个问题。

  1.使用Cookie来保存用户的登陆信息,但要注意安全问题,可以将数据加密但存入Cookie,当用户Session过期要求用户登陆时,程序首先读取Cookie来自动登陆。

  2.在每个页面中加入这段代码:<iframe src="refresh.php" width="0" height="0"></iframe>,再新建一个"refresh.php":
   <?php
   @session_start();
   @$_SESSION["Refresh"] = "Refresh";
   die("<meta http-equiv='Refresh' content='180; URL=refresh.php'>");
   ?>