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 相关文章推荐
php IP转换整形(ip2long)的详解
Jun 06 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
php微信支付接口开发程序
Aug 02 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php.ini中文版
2006/10/09 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
Python全排列操作实例分析
2018/07/24 Python
Python3数字求和的实例
2019/02/19 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
什么是python类属性
2020/06/10 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
学生会竞选演讲稿怎么写
2014/08/26 职场文书
保密工作承诺书
2014/08/29 职场文书
流动人口婚育证明
2014/10/19 职场文书
董存瑞观后感
2015/06/11 职场文书
运动会5000米加油稿
2015/07/21 职场文书
会议室管理制度范本
2015/08/06 职场文书
宣传委员竞选稿
2015/11/19 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis