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 变量定义方法
Jun 14 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
php导出excel格式数据问题
Mar 11 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
php生成图片验证码的方法
Apr 15 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 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 引用(&amp;)详解
2009/11/20 PHP
PHP输入流php://input介绍
2012/09/18 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
PHP安全上传图片的方法
2015/03/21 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
python django 实现验证码的功能实例代码
2017/05/18 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
测试工程师程序员求职信范文
2014/02/20 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
鲁迅故里导游词
2015/02/05 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
Java设计模式之代理模式
2022/04/22 Java/Android