PHP中的session永不过期的解决思路及实现方法分享


Posted in PHP onApril 20, 2011

我们前期开发了一个只有公司客服人员才能使用的系统——有限的几个客服人员。就是这有限的几个客服人员前几天突然就提出这样的问题:我们每隔很短一段时间 (半个小时不操作页面),正着急解决客户问题的时候,系统却提示需要登录,耽误了客户的时间…… 这很不爽!

客户就是上帝,唯一的上帝。于是上峰要求我们能够实现PHP中的session永不过期,除非我们的客服人员人为的让他过期了。出于安全性的考虑我很不理解这种永不过期的行为;出于懒惰的原因我真的不想修改以前的程序。但是没有办法,我依然需要改。

不修改程序是最好的方法了,因为如果修改程序,测试部一定非常郁闷像我一样,那么只能修改系统环境配置,其实很 简单,打开php.ini设置文件,修改三行如下:

1、session.use_cookies

把这个的值设置为1,利用cookie来传递sessionid

2、session.cookie_lifetime

这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以PHP的 session不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,999999999怎么样,可以的!就这样。

3、session.gc_maxlifetime

这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 那么我们也把它设置为99999999。

就这样一切ok了,当然你不相信的话就测试一下看看——设置一个session值过个10天半个月的回来看看,如果你的电脑没有断电或者宕机,你仍 然可以看见这个sessionid。

当然也可能你没有控制服务器的权限并不能像我一样幸运的可以修改php.ini设置,一切依靠我们自己也是有办法的,当然就必须利用到客户端存储 cookie了,吧得到的sessionID存储到客户端的cookie里面,设置这个cookie的值,然后把这个值传递给session_id()这 个函数,具体做法如下:

<?php 
session_start(); // 启动Session 
$_SESSION['count']; // 注册Session变量Count 
isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID = session_id(); 
// 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID 
$_SESSION['count']++; // 变量count加1 
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中 
echo $count; // 显示Session变量count的值 
?>

如果很久以后(多久?你自己看吧)你回来刷新这个页面,输出的数字比你走的时候大了1那就对了!如果大了很多,估计是谁动你电脑了,这次测试就不准 确了,呵呵……重新出去一会儿吧!

注意:在setcookie一行中的'PHPSESSID'并不是一定的,如果你遇到有个患有修改狂疾病的网管员,他可能对其做了 修改,最好的方法是用phpinfo()这个函数看看,确认一下session.name一项的值,比较科学。

PHP 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
php计算整个目录大小的方法
Jun 01 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
PHP单链表的实现代码
Jul 05 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
php微信开发之谷歌测距
Jun 14 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 #PHP
PHP session有效期session.gc_maxlifetime
Apr 20 #PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 #PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 #PHP
php中显示数组与对象的实现代码
Apr 18 #PHP
PHP的变量总结 新手推荐
Apr 18 #PHP
写php分页时出现的Fatal error的解决方法
Apr 18 #PHP
You might like
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
Javascript事件实例详解
2013/11/06 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
python3生成随机数实例
2014/10/20 Python
python轻松实现代码编码格式转换
2015/03/26 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python线程threading模块用法详解
2020/02/26 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
学术会议欢迎词
2014/01/09 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
结婚保证书范文
2014/04/29 职场文书
2015年度保密工作总结
2015/04/24 职场文书
天气温馨提示语
2015/07/14 职场文书
导游词之台湾阿里山
2019/10/23 职场文书