PHP如何保持页面的session不过期及实现代码
更新:2022-06-06 09:22:48
人气:1045
来源:本站原创
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要被用到,读到才是关键,要不然不会更新最近的访问时间,还是会过期的 ?>
推荐的文章
随手记
- ● base64.js文件下载及使用方法说明
- ● windows利用bat微信双开、多开
- ● 百度API提交推送报{"error":401,"message":"tokenisnotvalid"}什么原因
- ● 如果在调用创建群接口时没有保存OpenConversationId,可以通过调用本接口通过chatId获取OpenConversationId
- ● Windows中使用BAT文件设置指定IP地址或自动获取IP
- ● php中如何对PHPSESSIDcookie设置httponly
- ● Navicat连接mysql出现1045错误,各种情况分析
- ● 用Apache的ab并发性能测试结果如何分析出最大并发数?
- ● Arrayandstringoffsetaccesssyntaxwithcurlybracesisnolongersupport
- ● Apache下如何关闭Track/trace请求设置及状态验证(window下)
PHP经验分享
- ● 如何开启PHP8的JIT提升运行速度
- ● 钉钉API接口-用PHP+Curl实现获取用户信息
- ● 钉钉API接口-用PHP+Curl实现获取应用Access_Token
- ● 在PHP中使用CURL,“撩”服务器只需几行——phpcurl详细解析和常见大坑
- ● MySQLInnodb并发涉及参数说明
- ● mysql参数调优之innodb_thread_concurrency、innodb_concurrency_tickets合理的使用cpu性能
- ● PHP用socket检测服务器IP端口是否开放?代码示例
- ● GatewayWorker报错:Waring:Events::onMessageisnotcallable
- ● PHP监控指定IP端口接收到的数据的实现代码
- ● php怎么获取不带后缀的文件名