请问php中session的超时时间问题

webstaryoyo 2014-07-13 12:07:29
新手初学php,许多不了解的地方求教。以前学过asp,知道有个session.timeout可以设置超时时间,默认是20分钟。 但PHP里面没有找到类似设置会话超时时间的函数,不知如果php页面不刷新也就是对服务器端没有任何请求的情况下默认多久会话会超时失效?

在php.ini中有个session.cookie_lifetime 默认是0, 这个0和会话超时时间有关吗?0是不是代表只要浏览器不关闭,session就一直有效,不会超时?
另外,配置文件里还有个session.gc_maxlifetime = 1440,这个查手册是垃圾回收删除默认tmp目录下sess文件的超时时间,这个默认的1440秒也就是24分钟是会话超时时间吗?24分钟后,sess文件有可能被删除,那么意味着会话也失效了?可这个删除有个概率,默认1/1000,也就是很大可能没有删除,那如果没删除session就一直有效不会超时么? 也就是24分钟没刷新 会话也不一定就会超时失效吗?

求解。
...全文
210 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
webstaryoyo 2014-07-16
  • 打赏
  • 举报
回复
哦,理解有误,按照上面理解的话,那么 if($_SESSION['name']['expire']>time()){ echo 'session 未过期'; }else{ echo 'session 未过期'; } 中 else{ echo 'session 未过期';-----是不是应该改为 echo 'session 已过期'; ? }
傲雪星枫 2014-07-15
  • 打赏
  • 举报
回复
if($_SESSION['name']['expire']>time()){ echo 'session 未过期'; } 過期時間比現在小才過期啊,比現在大怎麼會過期呢? 明天對于今天來講是過期?不會吧。
webstaryoyo 2014-07-15
  • 打赏
  • 举报
回复
谢谢,大致了解了 楼上的 if($_SESSION['name']['expire']>time()){ echo 'session 未过期'; } 应该是echo 'session 已过期'; 吧 感觉php里面没有确定的默认会话超时时间,如果想控制用户会话超时时间,需要自己编程控制的
傲雪星枫 2014-07-13
  • 打赏
  • 举报
回复
session的超时时间并不是很准的。 如果需要很准,则在session中记录过期时间,当session文件不存在,或存在但过期时间超时,则当失败。

if(isset($_SESSION['name'])){
    if($_SESSION['name']['expire']>time()){
       echo 'session 未过期';
   }else{
       echo 'session 未过期';
   }
}else{
    echo 'session 过期';
}
xuzuning 2014-07-13
  • 打赏
  • 举报
回复
session.gc_maxlifetime 不是针对 session 有效时间的,而是针对垃圾回收进程 gc 的 他告知 gc 进程,可以删除 session.gc_maxlifetime 秒之前修改过的临时文件 当然,只要 sessionid 对应的临时文件存在,则 session 就有效 要想自主控制 session 的行为,则需要自己编写处理代码。手册或网上的示例代码只是演示了基本写法,你需要根据你的需求进行扩展

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧