PHP如何保持页面的session不过期及实现代码
更新:2022-06-06 09:22:48
人气:49
来源:本站原创
A+
关于如何让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要被用到,读到才是关键,要不然不会更新最近的访问时间,还是会过期的 ?>
推荐的文章
Ads by Google
随手记
- ● JavaBridge.jar和Aspose.Cells安装及PHP将EXCEL导出PDF方法
- ● PHP批量删除所选内容的ID与参数加密冲突的解决方法【专用】
- ● JQ实现banner轮播图片的淡入淡出切换效果的代码
- ● PHP上传大文件二次确认对话框及loading显示防止假死状态【专用】
- ● DreamWeaver正则表达式将代码中的空白行删除
- ● mysql的慢查询日志记录什么
- ● js获取上传文件类型以及大小的方法
- ● windows系统如何查询openssl.cnf文件位置及更换路径
- ● SSL证书工具之CSR的作用是什么?
- ● [ssl:warn]SessionCacheisnotconfigured[hint:SSLSessionCache]原因
PHP经验分享