php如何修改SESSION的生存存储时间的实例代码_php实例

来源:脚本之家  责任编辑:小易  

其实Session 还提供了一个函数 session_set_cookie_params();来设置 Session 的生存期的,该函数必须在 session_start()函数调用之前调用:?php// 保存一天$lifeTime=24*3600;session_set_cookie_params($lifeTime);session_start();www.zgxue.com防采集请勿采集本网。

如何修改SESSION的生存时间

PHP 中session是一种会话机制,用户登录等功能是都会用到。如果在整个网站想共用session,只需在项目入口处设置session的路径,生命周期,域名即可。示例如下: php 第一个参数是session的生命

我们来手动设置 Session 的生存期:

你可以用AJAX请求后台把你想要传递的值传递到PHP然后$_SESSION[]=值 然后die(json_encode(值))就可以了

<?phpsession_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/"); ?>

php if(isset($_POST['city'])&$_POST['city']!{ session_start();SESSION['city']=$_POST['city'];echo$_SESSION['city'];}else if(isset($_SESSION['city'])){ city=$_SESSION['

其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:

1、直接修改php.ini配置文件 代码如下: session.save_handler=memcache 设置session的储存方式为memcache memcache.hash_strategy= consistent\"/设置memcache的hash算法 session.save_path=

修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。我们查看服务器端session.save_path目录会发现很多类似

<?php // 保存一天 $lifeTime = 24 * 3600; session_set_cookie_params($lifeTime); session_start();$_SESSION["admin"] = true; ?>

如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。

php中session过期时间设置

网上很多人给出了解答:修改php配置文件中的session.gc_maxlifetime。如果想了解更多session回收机制,继续阅读。(本文环境php5.2)

概述:每一次php请求,会有1/100的概率(默认值)触发“session回收”。如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效。

1. session在server端(一般是Apache with PHP module)如何存在的?

默认的,php会将session保存在/tmp目录下,文件名为这个样子:sess_01aab840166fd1dc253e3b4a3f0b8381。每一个文件对应了一个session(会话)。

more /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381

username|s:9:”jiangfeng”;admin|s:1:”0″;

#变量名|类型:长度:值

删除这里的session文件,就表示对应的session失效了。

2. session在client端(一般是浏览器)如何存在的?

session在浏览器端,只需要保存session ID(由server端生成的唯一ID)就可以了。有两种保存方式:在cookie中、在url里面。如果cookie中保存session ID,就可以看到浏览器的cookie中有一个PHPSESID变量。如果是URL传递的,就可以看到形如:

index.php?PHPSESID=01aab840166fd1dc253e3b4a3f0b8381的URL。(在server端通过session.use_cookies来控制使用哪一种方式)

3. 在server端,php如何判断session文件是否过期?

如果”最后的修改时间”到”现在”超过了gc_maxlifetime(默认是1440)秒,这个session文件就被认为是过期了,在下一次session回收的时候,如果这个文件仍然没有被更改过,这个session文件就会被删除(session就过期了)。

简单的说,如果我登录到某网站,如果在1440秒(默认值)内没有操作过,那么对应的session就认为是过期了。

所以,修改php.ini文件中的gc_maxlifetime变量就可以延长session的过期时间了:(例如,我们把过期时间修改为86400秒)

session.gc_maxlifetime = 86400

然后,重启你的web服务(一般是apache)就可以了。

注意:php5里面session过期使用了回收机制。这里设置时间为86400秒,如果session在86400秒内没有被修改过,那么在下一次“回收”时才真的被删除。

3. session“回收”何时发生?

默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的

#概率是gc_probability/gc_divisorsession.gc_probability = 1session.gc_divisor = 100

注意1:假设这种情况gc_maxlifetime=120,如果某个session文件最后修改时间是120秒之前,那么在下一次回收(1/100的概率)发生前,这个session仍然是有效的。

注意2:如果你的session使用session.save_path中使用别的地方保存session,session回收机制有可能不会自动处理过期session文件。这时需要定时手动(或者crontab)的删除过期的session:cd /path/to/sessions; find -cmin +24 | xargs rm

4. 一些特殊情况

因为回收机制会检查文件的“最后修改时间”,所以如果某个会话是活跃的,但是session的内容没有改变过,那么对应的session文件也就没有改变过,回收机制会认为这是一个长时间没有活跃的session而将其删除。这是我们不愿看到的,可以通过增加如下的简单代码解决这个问题:

<?phpif(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) $_SESSION['last_access'] = time();?>

代码会每隔60秒,尝试修改修改一次session。

总结:如果想修改session过期时间,修改变量gc_maxlifetime就可以了。php5的session采用被动的回收机制(garbage collection)。过期的session文件不会自己消失,而是通过触发“回收”来处理过期的session。

一:在baiphp.ini 中设置du session.gc_maxlifetime = 1440 //默认时zhi间二:dao代码实内现$lifeTime = 24 * 3600; // 保存一天容 session_set_cookie_params($lifeTime); session_start();,session_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/"); ?>  其复实 Session 还提供了一个函数 session_set_cookie_params(); 来设置制 Session 的生存期的,该函数必须在 session_start() 函数调2113用5261之前调用:<?php // 保存一天4102 $lifeTime = 24 * 3600; session_set_cookie_params($lifeTime); session_start();$_SESSION["admin"] = true;   如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来1653创建 cookie,php.ini文件中修改:session.cookie_lifetime = 0本回答被网友采纳,一般直接在php中用: session_set_cookie_params(24*3600); //保存一天session_start();,session_set_cookie_params(24 * 3600);session_start();内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php实现负载均衡下的session共用功能
  • php实现分布式memcache设置web集群session同步的方法
  • php+session防止表单重复提交的解决方法
  • redis 替代php文件存储session的实例
  • php基于session锁防止阻塞请求的方法分析
  • php编程中的session阻塞问题与解决方法分析
  • 详解php使用redis存储session时的一个warning定位
  • ajax + php session制作购物车
  • 深入浅析php的session反序列化漏洞问题
  • php session实现购物车功能
  • php学习笔记之session
  • php中smarty变量修饰用法实例分析
  • php禁止个别ip访问网站
  • 基于mysql到mongodb简易对照表的详解
  • php网页游戏学习之xnova(ogame)源码解读(十一)
  • thinkphp实现二级循环读取的方法
  • php随机获取未被微信屏蔽的域名(微信域名检测)
  • typecho插件编写教程(六):调用接口
  • thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
  • php版本常用的排序算法汇总
  • 使用php重新实现php脚本引擎内置函数
  • PHP如何修改session的生存时间
  • PHP如何修改session的生存时间
  • php怎么设置session的有效时间
  • php中怎么修改session的值,session的值看着是一个数组的形式,
  • php 怎么将 session 的有效范围设置成整个网站目录?
  • 如何在php页面通过单击事件修改session值
  • 求修改一段php SESSION代码
  • 如何使用PHP把Session娴组emcache中
  • php session是怎样生成的
  • php中如何设置不同应用的不同session?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实现负载均衡下的session共用功能php实现分布式memcache设置web集群session同步的方法php+session防止表单重复提交的解决方法redis 替代php文件存储session的实例php基于session锁防止阻塞请求的方法分析php编程中的session阻塞问题与解决方法分析详解php使用redis存储session时的一个warning定位ajax + php session制作购物车深入浅析php的session反序列化漏洞问题php session实现购物车功能php学习笔记之sessionphp中smarty变量修饰用法实例分析php禁止个别ip访问网站基于mysql到mongodb简易对照表的详解php网页游戏学习之xnova(ogame)源码解读(十一)thinkphp实现二级循环读取的方法php随机获取未被微信屏蔽的域名(微信域名检测)typecho插件编写教程(六):调用接口thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例php版本常用的排序算法汇总使用php重新实现php脚本引擎内置函数php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php从数组中删除元素的四种方法实php使用异或实现的加密解密实例laravel框架自定义公共函数的引入操作示例php调用接口api封装的例子yii framework框架教程之缓存用法详解php 数组处理函数extract详解及实例代码thinkphp3.2.3框架邮件发送功能图文实例详简单介绍php非阻塞模式thinkphp5(tp5)实现改写跳转提示页面的方php实现把mysql数据库导出为.sql文件实例php设计模式之观察者模式实例详解【星际争
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved