我要保持Session不过期,主要是因为客户登陆后可能隔很长时间才操作,不想更改session过期时间,我想每隔几分钟刷新一下,也不想用iframe,就用ajax.客户端间隔一段时间访问server.php,客户端代码:
<script type="text/javascript">
function ajaxFunction(url)
{
var xmlHttp; try
    {
    // Firefox, Opera 8.0+, Safari
     xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
   // Internet Explorer
    try
       {
       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
       }
    catch (e)
       {       try
          {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
       catch (e)
          {
          alert("您的浏览器不支持AJAX!");
          return false;
          }
       }
    }

// 设置处理函数
xmlHttp.onreadystatechange=function()
   {
   if(xmlHttp.readyState==4)
     {
     // 从服务器的response获得数据
//alert(xmlHttp.responseText);
     }
   } xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader("If-Modified-Since","0");  // 禁止缓存
xmlHttp.send(null);
 }
 
 // 请求的url
 var url = "server.php";
 // 间隔秒数
 var seconds =480;
 
 setInterval("ajaxFunction(url)",seconds*1000);
</script>服务器Server.php:<?php
/**
 * 为了定时刷新页面以保持Session
 */
session_start();
echo time();
?>但是隔半个小时去看还是过期了,为什么?
客户端的ajax请求是执行了的,
alert(xmlHttp.responseText); 打印出了正确数据,说明ajax请求正常。

解决方案 »

  1.   

    ini_set('session.cookie_lifetime', time()+31536000);
      

  2.   

    貌似半个小时以后没有session操作就会自动过期,楼上有正解,可以参考
      

  3.   

    我是利用ajax每隔6分钟调用一次server.php,按理说可以一直保持session直到关闭浏览器,但为何半个小时后还是过期了?
      

  4.   

    那用ajax不停地请求server.php页面,是不是等同于手动刷新页面?session能保持吗?