PHP中的session永不过期的解决思路及方法

让PHP的session永不过期,你可能没有遇到这么郁闷的问题,但是我遇到过,很郁闷。

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

  客户就是上帝,唯一的上帝。于是上峰要求我们能够实现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一项的值,比较科学。

时间: 2024-10-03 20:31:47

PHP中的session永不过期的解决思路及方法的相关文章

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

让PHP的session永不过期,你可能没有遇到这么郁闷的问题,但是我遇到过,很郁闷. 我们前期开发了一个只有公司客服人员才能使用的系统--有限的几个客服人员.就是这有限的几个客服人员前几天突然就提出这样的问题:我们每隔很短一段时间 (半个小时不操作页面),正着急解决客户问题的时候,系统却提示需要登录,耽误了客户的时间-- 这很不爽! 客户就是上帝,唯一的上帝.于是上峰要求我们能够实现PHP中的session永不过期,除非我们的客服人员人为的让他过期了.出于安全性的考虑我很不理解这种永不过期的行

asp之让Session永不过期

又有人说设session.timeout=99999.这种同样不行,session有最大时间限制.我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,1441都是不可以有,呵呵.本人测试环境:win2003+IIS6.0+ASP3.0. 所以想通过设session.timeout的过期时间让session永不过期是不可能的.写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!还有就是用在要保持session的页里设隐藏iframe每

asp之让Session永不过期_应用技巧

又有人说设session.timeout=99999.这种同样不行,session有最大时间限制.我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,1441都是不可以有,呵呵.本人测试环境:win2003+IIS6.0+ASP3.0. 所以想通过设session.timeout的过期时间让session永不过期是不可能的.写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!还有就是用在要保持session的页里设隐藏iframe每

php中使用session防止用户非法登录后台的方法_php技巧

本文实例讲述了php中使用session防止用户非法登录后台的方法.分享给大家供大家参考.具体如下: 一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读取session文件来判断是否可以进行后台操作. 以下面为例,假如admin.php是我们的后台操作页面,如果没有启用 session,那么,即便是没有登录,用户照样能访问到该页面,这时候,就需要用到 session 来防止用户非法登录到这个页面了.下面是三个文件的代码 登录页面:login.php 复制代码 代

EXTJS2.2中输入框边框显示不完整解决思路,一级解决办法。

同事在使用ExtJs时发现如下Bug:表单当中的元素,出现文本框参差不齐,有的没有边框等,不美观:输入框显示不完整,抓狂. 分析步骤及解决思路如下:    1.使用IE的F12功能,获取生成的输入框HTML脚本,关键点脚本如下.<pre><br><DIV style="PADDING-LEFT: 15px;background:blue" class=x-form-element><INPUT class="x-form-text&q

在ASP.NET中,设置Session的过期时间的方法_实用技巧

方法一:      在后台应用程序中设置:Session.Timeout = 1;     注意:1.此方法可以设置在一个公共的页面中,然后直接调用即可.             2.时间是以分钟为单位的 方法二:      在Web.config中设置:      在<system.web></system.web>中写入<sessionState mode="InProc" timeout="1" />

php session永不过期的设置方法

,修改三行如下: 1.session.use_cookies 把这个的值设置为1,利用cookie来传递sessionid 2.session.cookie_lifetime 这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废--就是因为这个所以PHP的session不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,999999999怎么样,可以的!就这样. 3.session.gc_maxlifetime 这个是Session

label标签使用过程中遇到的问题分析及解决思路

最近在做东西时候使用到了label标签,由于之前很少使用label标签,所以就遇到一个很奇怪的问题.什么问题呢?下面来看一个效果   <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>HTML label tag 学习 by Typeof</title> <style type="text/css"> html

笔记本电池充电无法到达100%的解决思路和方法

电池充电无法以达到100%,从软件方面主要有以下几个原因:   1.电池本身老化   2.电原管理软件和驱动   电池本身老化   电池在使用一段时间后,电池会产生损耗,会导致内部电量逐步下降,可能会就导致充电无法充到100%的情况,此类情况一般是需要做电池校准,重新校正电池电量会有所改善.操作方法是使用随机自带电源管理原软件,里面有一个电池校准,操作后等待完成即可,时间会较长.如下图所示:   电源管理7.0     电源管理8.0     对于没有电源管理软件,也可以进行手动操作.手动操作方