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 ADODB使用方法集锦
Mar 25 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php中的strpos使用示例
Feb 27 PHP
php调用google接口生成二维码示例
Apr 28 PHP
8个PHP数组面试题
Jun 23 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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实现根据时间戳获取周几的方法
2016/02/26 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
js几个不错的函数 $$()
2006/10/09 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
python进阶教程之循环对象
2014/08/30 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python导入oracle数据的方法
2015/07/10 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python批量下载抖音视频
2019/06/17 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
keras得到每层的系数方式
2020/06/15 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
golang/python实现归并排序实例代码
2020/08/30 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
电焊工工作岗位职责
2014/02/06 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
任命书标准格式
2015/03/02 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python