php session 生命周期代码实例
php session 生命周期代码实例
我们为什么需要Session,就是因为我们需要存储各个用户的状态数据。那么试问,如果由你来设计解决这个需求的方案,那么也许你会设置这样一个数据表用与存储各个用户的状态信息:
session是很抽象的一个概念。我们不妨先从与它几个息息相关的有迹可寻的小切入点入手,然后逐渐地认识了解它。
php session是基于cookie的,所以要设置session的生命周期,首先要设置cookie的失效时间。因为在客户端(如浏览器)登录网站时,SESSION 是否有用,首先找客户端是否有 COOKIE,通过COOKIE 中的 SESSION ID 去找服务器上的文件。
这样的话,做了以下设置:
session_set_cookie_params( 12*60*60 );//设置cookie的有效期
session_cache_expire(12*60);//设置session的有效期
我们继续来看session用法实例:
新建A.php
<?php
session_start();
$_SESSION['test']='sssssssssssss';
echosession_id().'<br />';
echo$_SESSION['test'];
?>
我们新建B.php,并浏览会发现session已经存在
<?php
session_start();
echo session_id(),'<br/>';
echo $_SESSION['test'];
?>
注意:如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期:
<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
下面我们来观察session_destroy()与session_unset()的区别
<?php
session_start();
echo "<br/>---1--<br/>";
$pg_uid = 1;
//$_SESSION['pg_uid']; //该行会报一个Notice消息,即没有初始化该变量
$_SESSION['pg_name'] = 'boys'; //填入到$_SESSION变量,但不立即写入session文件,值为boys
$pg_sex = 1;
$pg_theme = 'default';
session_register('pg_sex'); //填入到$_SESSION变量,但不立即写入session文件,值为NULL
session_register('pg_theme'); //填入到$_SESSION变量,但不立即写入session文件,值为NULL
var_dump($_SESSION);
//--
echo "<br/>---2--<br/>";
unset($_SESSION['pg_theme']); //从$_SESSION清除该元素,不立即同步到session文件
unset($_SESSION['pg_name']); //从$_SESSION清除该元素,不立即同步到session文件
session_unregister('pg_sex'); //从$_SESSION清除该元素,不立即同步到session文件
session_unregister('pg_uid'); //从$_SESSION清除该元素,不立即同步到session文件
var_dump($_SESSION);
echo "<br/>---3--<br/>";
$_SESSION['pg_members'] = 5; //填入$_SESSION数组,但不立即同步到session文件,值为5
$pg_boy = 6;
session_register('pg_boy'); //填入$_SESSION数组,但不立即同步到session文件,值为NULL
session_unset($_SESSION); //清空$_SESSION
var_dump($_SESSION);
echo "<br/>---4--<br/>";
$_SESSION['pg_boss'] = 3; //填入$_SESSION数组,但不立即同步到session文件,值为3
$pg_girls = 6;
session_register('pg_girls'); //填入$_session数组,但不立即同步到session文件,值为NULL
session_destroy(); //注销session_destroy
var_dump($_SESSION);
echo "<br/>---5---<br/>";
session_unregister('pg_boss'); //pg_boss不会被清除,还为NULL
session_unset(); //不会清空$_SESSION数组,因为session已被session_destroy注销
var_dump($_SESSION);
?>
其实PHP5 Session还提供了一个函数 session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
?>
php session 生命周期代码实例的更多相关文章
- Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡
上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...
- session生命周期
session生命周期 原文链接:http://blog.sina.com.cn/s/blog_72c8c1150100qpgl.html 文中黄色字体为我的标记修改或添加 Session保存在服务器 ...
- JAVA-JSP内置对象之session对象设置并获得session生命周期
相关资料:<21天学通Java Web开发> session对象设置并获得session生命周期1.通过session对象的setMaxInactiveInterval()方法可以设置se ...
- session生命周期,与cookie的区别
sessinon在用户访问第一次访问服务器时创建. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Sessio ...
- session生命周期(一)
Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Session在用户访问第一次访问服务器时创建,需要注意只有访问JSP.Servlet等程序时才会创建Session,只访问 ...
- php会话(session)生命周期概念介绍及设置更改和回收
http://www.169it.com/article/8429580816135935852.html https://my.oschina.net/jiec/blog/227252 sessi ...
- Session生命周期讨论
文章级别:Java初级 预备技能点:JSP内置对象, 监听器, 序列化 在程序开发的时候, request session appplication内置对象, 是用的比较多的 ...
- JavaWeb关于session生命周期的几种设置方法
一般session的生命周期都是建立在用户登录系统后对用户信息进行一个记录,session类似于你有一张银行卡,而卡里的钱就是属于session存储的信息,卡掉了就不能取出里面的钱. 以前sessio ...
- Request Session生命周期及struts1 中service的编写
现在接手的项目是一个早期的struts1框架的项目.同时也是刚开始接触web 以及struts1架构. 在处理多个action时,有一个tab子页面需要每5s自动刷新一次. 然后在测试过程中发现,点击 ...
随机推荐
- 解决adb command not found以及sdk环境配置
解决adb command not found以及sdk环境配置 分类: mark 2013-10-02 09:41 2975人阅读 评论(0) 收藏 举报 原文地址:http://www.cnblo ...
- Quartz总结(四):动态修改定时器二
前文:http://www.cnblogs.com/LiuChunfu/p/5598806.html 提到了一种动态修改定时器的方法, 其本质就是在job方法中注入Schedular的对象,从Sche ...
- treeview 与tabControl组合使用
1.左边一个treeview,右边一个tabcontrol: 2.调整控件让tree在tabcontrol上,并让treeview压住tab页 3.将tab页的name设置成treeview的node ...
- Blog`s CSS
#div_digg { position: fixed; bottom: 10px; width: 50px; right: 50px; filter: alpha(opacity=20); opac ...
- CentOS 7 x64 安装 Ceph
CentOS 7 x64 安装 Ceph 二, 实验环境 节点 IP 主机名 系统 MON 1 ...
- (简单) HDU 2612 Find a way,BFS。
Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Nin ...
- MySQL master/slave 模式
1 .复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重 ...
- 推荐几个web中常用js图表插件
作者:zccst 我自己用过fusioncharts和highchart. jQuery插件有: TufteGraph flot js charts jqchart elycharts jquery ...
- stm32使用LWIP实现DHCP客户端
LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我 ...
- java中基本类型占用字节数
之前一直使用c/c++开发c中各种类型占用的位数和java还是有区别的,特地找了篇文章过来对比下. 在处理网络协议的时候需要注意 在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种 ...