会话处理(ZendSession).ppt_第1页
会话处理(ZendSession).ppt_第2页
会话处理(ZendSession).ppt_第3页
会话处理(ZendSession).ppt_第4页
会话处理(ZendSession).ppt_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论