欢迎您来到,李雷博客 | PHP博客        登录  |  注册

PHP如何保持页面的session不过期及实现代码

更新:2022-06-06 09:22:48
人气:1045
来源:本站原创
A+

关于如何让session不过期,这个百度检索会有N多的结果,但总感觉解决不了自己的疑惑,索性自己测试一下加深理解,我就用大白话说一下。

首先,明白PHP中session过期被删除与清除机率和自身最近一次的修改(访问)时间有关,比如就算概率中到你了,虽然你最后一次的访问时间还没有超过服务器设置的比如20分钟,也不会被清除。

第二,网上说修改PHP.ini配置文件,如果是自己的服务器有权限可以,没权限怎么办?只能用程序代码来实现。

第三,理解一下session一般用在后台登录时记录身份,输入账号密码登录成功就记录了一个session,在服务器的指定目录,其实就是一个文件的存在,名称保持始终如一,不会改变,而更重要的属性是自己的最近一次访问时间,每次只要用PHP代码读取到了此变量,无论是用于输出显示或是赋值给变量都是可以更新最近访问时间的,$ss_ee1=$_SESSION['username'],也就是这个变量用于一次赋值,他这个独立存在于服务器上的文件就会更新修改和读取时间,这样就不会超时了。

下图中蓝色框才是不超时掉线的核心:

php中session属性,过期时间

所以网上有人写到网页自动刷新或是框架刷新,但没说到点上,如果刷新的页面中不包含能用到$_SESSION['username']的是没有实际效果的,虽然是文件都在服务器上,但你刷新一个页面中没有用到过$_SESSION['username']变量的,是没有效果的,最近访问时间不会变,也就造成会过期的原因。

具体代码实现,建议放在公共文件中调用:

<script>
function keep_online(){
    var ajaxform=$.post("keep_online.php",{get_random:Math.random()},function(result){
        //console.log(result)
        setTimeout("keep_online()",60000);
    })
}

setTimeout(function() {
    keep_online()
}, 60000);
</script>

keep_online.php文件代码:

<?php
session_start();
$ss_ee1=$_SESSION['username'];//这个session要被用到,读到才是关键,要不然不会更新最近的访问时间,还是会过期的
?>


推荐的文章
# 发表我的评论
  /     /  
# 最近评论

这样啊 不错

  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2023 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4