PHP如何保持页面的session不过期及实现代码
更新:2022-06-06 09:22:48
人气:1684
来源:本站原创
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要被用到,读到才是关键,要不然不会更新最近的访问时间,还是会过期的 ?>
推荐的文章
随手记
- ● 统信UOS系统如何设置指定时间自动重启系统的方法
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题