«

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

时间:2024-3-3 10:46     作者:韩俊     分类: PHP


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

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

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

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

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

所以网上有人写到网页自动刷新或是框架刷新,但没说到点上,如果刷新的页面中不包含能用到$_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要被用到,读到才是关键,要不然不会更新最近的访问时间,还是会过期的
?>


标签: php php教程

热门推荐