




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第15章会话处理(Zend_Session),在计算机语言中,会话是一种面向连接的可靠通信方式。而会话处理机制,即是指编程语言实现基于会话的通信的方式。在PHP中,会话(session)代表服务器端与客户端之间的一种持久的状态数据。使用ZendFramework的Session可以在由相同客户端发起的多个页面请求之间,管理和保护会话数据。本章介绍如何使用Zend_Session组件来实现会话的处理。,15.1Zend_Session会话简介,在Zend_Session中的会话数据是对Cookie数据的扩展。但该数据又与Cookie数据有所不同。二者最明显的区别就是会话数据不储存在客户端,而Cookie则通常保存在客户端。会话数据仅在服务器端源代码使用时,才通过回应客户端的请求与客户端共享会话数据。在Zend_Session组件中,“sessiondata”代表存储在服务器端的$_SESSION数组中的数据。该数据使用Zend_Session来管理,由会话命名空间(Zend_Session_Namespace,该类为Zend_Session的一个子类)以对象的方式来控制。命名空间逻辑上就是一系列以字符串为键名的联合数组,这类似于普通的PHP数组。,15.2Zend_Session基本用法,上一节对Zend_Session做了一个纯理论性的简介。本节将以具体的实例来讲解Zend_Session的基本用法。其中包括如何使用Zend_Session实现会话、如何对会话命名空间进行迭代以及如何对会话命名空间进行访问。,15.2.1使用Zend_Session,本小节来介绍如何使用Zend_Session实现会话。要使用Zend_Session会话,应该需要以下几个步骤。(1)引用命名空间(Zend_Session_Namespace)类。(2)为命名空间类实例化一个对象。可以使用new关键字为类实例化对象,其中要使用参数命名空间。如果不指定参数,则类的构造函数会使用默认的命名空间参数,其值为Default。(3)使用Zend_Session_Namespace类的实例的成员,可以对其进行赋值或者读取操作。,15.2.2遍历会话命名空间,会话命名空间Zend_Session_Namespace支持foreach语句(通过循环遍历所有成员的PHP语句)。基于这一点,可以使用foreach语句对会话命名空间进行迭代,以遍历会话命名空间中的全部值。,15.2.3访问会话命名空间,访问会话命名空间可以使用通常对于一般变量的方法,如直接为变量赋值、直接读取变量的值、使用isset()函数判断其是否为Null值、使用unset()来注销变量等。,15.3Zend_Session高级用法,上一节介绍的是Zend_Session在会话处理方面的基本应用。本节继续介绍该组件的高级应用。其内容包括开启会话、锁定会话命名空间、会话过期、会话封装与控制器以及防止一个会话命名空间的多重实例等部分。本节就以上列出的这些内容逐一地作详细介绍。,15.3.1开启会话,如果程序需要所有的请求都通过会话的形式来管理,那么则需要在程序最开始时就开启会话。要开启会话,可以使用Zend_Session的静态方法start()。该方法是Zend_Session类的静态方法,可以直接以Zend_Session:start()的方式使用,另外该方法也不需要任何参数。使用Zend_Session有两种正确的开启会话的方法。1使用Zend_Session:start()开启会话。2在需要会话的地方使用newZend_Session_Namespace()。,15.3.2锁定会话命名空间,为会话命名空间实例初始化对象并赋值之后,有时为了特定的需要,会锁定会话命名空间,以防止其他内容对其值进行更改。使用Zend_Session_Namespace的lock()方法可以锁定会话命名空间(即将其值改为只读状态);使用Zend_Session_Namespace的unLock()方法可以解除会话命名空间实例的锁定状态。另外还可以通过Zend_Session_Namespace的isLocked()方法判断指定会话命名空间是否处于锁定状态。该方法将根据其状态返回相应的布尔值。,15.3.3为会话设置生命期,每个会话都有其生命期,默认的会话在关闭页面时结束生命期。而通过Zend_Session_Namespace的setExpirationSeconds()方法与setExpirationHops()方法为每个会话设置生命期。两个方法的使用语法格式分别如下所示。setExpirationSeconds($seconds,$variables=null)setExpirationHops($hops,$variables=null,$hopCountOnUsageOnly=false),15.3.4防止多重实例,通常情况下,一个命名空间只允许使用一个实例,即通常重名的命名空间是不被允许的。为了防止这种多重实例的出现,可以在建立命名空间最后允许的实例时,传递True给第二个构造函数参数。经过这样的操作,之后初始化同一个命名空间都会导致一个异常的抛出,这样即可防止多重实例。,15.4对全局会话的管理,会话的默认行为可以由Zend_Session组件的一些静态方法来改变。可以使用Zend_Session_Core:setOptions()方法对PHP内置的会话模块的常用配置选项进行设置。本节就来介绍如何对全局会话进行管理。,15.4.1配置选项,常用的配置选项有以下几种。save_pathNamesave_handlerauto_startgc_probabilitygc_divisorgc_maxlifetimeserialize_handlercookie_lifetimecookie_pathcookie_domaincookie_secureuse_cookiesuse_only_cookiesreferer_checkentropy_fileentropy_lengthcache_limitercache_expireuse_trans_sidbug_compat_42bug_compat_warnhash_functionhash_bits_per_character,15.4.2会话生命期的补充,通常情况下,用户代理结束时,(如当用户退出浏览器)会话也会随之结束。然而,用户的应用程序可能通过持久Cookies的使用来提供扩展用户会话超过客户端程序的生命期的能力。在会话启动之后,以及会话Ccookie过期时间的长度之前,使用Zend_Session:rememberMe()即可提供这种能力。该方法的语法格式如下所示。rememberMe($seconds),15.4.3HeadersAlreadySent错误,在实例化会话命名空间或者其他PHP会话内容时,有可能出现HeadersAleradySent的错误。如果看到类似这样的错误信息:Cannotmodifyheaderinformation-headersalreadysent或者:Youmustcall.beforeanyoutputhasbeensenttothebrowser;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广元市宝轮中学招聘教师考试笔试试题(含答案)
- 股票行情预测AI模型创新创业项目商业计划书
- 智能药品管理创新创业项目商业计划书
- 2025年工业互联网平台数字签名技术规范与设备性能提升报告
- 2025年工业互联网平台计算机视觉缺陷检测技术:纺织行业智能化转型的关键报告
- 2025年老年教育课程改革与混合式教学模式的应用前景
- 2025年康复医疗器械市场需求与技术创新:创新产品与市场竞争力报告
- 湖北省三市联考2026届高三化学第一学期期中教学质量检测模拟试题含解析
- 2026届河北省部分重点中学化学高二第一学期期末质量跟踪监视试题含答案
- 营养师考试冲刺押题 2025年实操技能与基础理论模拟试卷
- 中级职称评审述职报告
- 2025年9月-2026年1月安全工作安排表
- 在接受诫勉谈话时的检讨及整改情况报告
- 小学生养成文明行为习惯自评检查表
- 2025山西航空产业集团有限公司校园招聘(第一批)43人笔试参考题库附带答案详解(10套)
- 2025年高级(三级)评茶员职业技能鉴定《理论知识》真题卷(后附答案及解析)
- 2024版电网典型设计10kV配电站房分册
- 献县地热管理办法
- 2025年一级建造师建设工程经济押题模拟卷(附答案)
- 脑血管支架植入术护理
- 财务共享模式下中储粮财务集中管理研究
评论
0/150
提交评论