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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
使用PHP和XSL stylesheets转换XML文档
Oct 09 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
php array_map()数组函数使用说明
Jul 12 PHP
PHP里的中文变量说明
Jul 23 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
php解决约瑟夫环算法实例分析
Sep 30 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
php基础学习之变量的使用
2011/06/09 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
npm qs模块使用详解
2020/02/07 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
浅谈python可视化包Bokeh
2018/02/07 Python
单链表反转python实现代码示例
2018/02/08 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
python实现简单的五子棋游戏
2020/09/01 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
趣味游戏活动方案
2014/02/07 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
Python 可迭代对象 iterable的具体使用
2021/08/07 Python