会话处理(zendsession)

上传人:shaoy****1971 文档编号:115634979 上传时间:2019-11-14 格式:PPT 页数:16 大小:507.81KB
返回 下载 相关 举报
会话处理(zendsession)_第1页
第1页 / 共16页
会话处理(zendsession)_第2页
第2页 / 共16页
会话处理(zendsession)_第3页
第3页 / 共16页
会话处理(zendsession)_第4页
第4页 / 共16页
会话处理(zendsession)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《会话处理(zendsession)》由会员分享,可在线阅读,更多相关《会话处理(zendsession)(16页珍藏版)》请在金锄头文库上搜索。

1、第15章 会话处话处 理(Zend_Session) 在计算机语言中,会话是一种面向连接的可靠通信方式 。而会话处理机制,即是指编程语言实现基于会话的通信的 方式。在PHP中,会话(session)代表服务器端与客户端 之间的一种持久的状态数据。使用Zend Framework的 Session可以在由相同客户端发起的多个页面请求之间,管 理和保护会话数据。本章介绍如何使用Zend_Session组件 来实现会话的处理。 15.1 Zend_Session会话简话简 介 在Zend_Session中的会话数据是对Cookie数据的扩 展。但该数据又与Cookie数据有所不同。二者最明显的区 别

2、就是会话数据不储存在客户端,而Cookie则通常保存在 客户端。会话数据仅在服务器端源代码使用时,才通过回应 客户端的请求与客户端共享会话数据。 在Zend_Session组件中,“session data”代表存储在 服务器端的$_SESSION数组中的数据。该数据使用 Zend_Session来管理,由会话命名空间( Zend_Session_Namespace,该类为Zend_Session的一 个子类)以对象的方式来控制。命名空间逻辑上就是一系列 以字符串为键名的联合数组,这类似于普通的PHP数组。 15.2 Zend_Session基本用法 上一节对Zend_Session做了一个纯

3、理论性的简介。本 节将以具体的实例来讲解Zend_Session的基本用法。其中 包括如何使用Zend_Session实现会话、如何对会话命名空 间进行迭代以及如何对会话命名空间进行访问。 15.2.1 使用Zend_Session 本小节来介绍如何使用Zend_Session实现会话。要使 用Zend_Session会话,应该需要以下几个步骤。 (1)引用命名空间(Zend_Session_Namespace) 类。 (2)为命名空间类实例化一个对象。可以使用new关 键字为类实例化对象,其中要使用参数命名空间。如果不指 定参数,则类的构造函数会使用默认的命名空间参数,其值 为Default

4、。 (3)使用Zend_Session_Namespace类的实例的成 员,可以对其进行赋值或者读取操作。 15.2.2 遍历历会话话命名空间间 会话命名空间Zend_Session_Namespace支持 foreach语句(通过循环遍历所有成员的PHP语句)。基于 这一点,可以使用foreach语句对会话命名空间进行迭代, 以遍历会话命名空间中的全部值。 15.2.3 访问访问 会话话命名空间间 访问会话命名空间可以使用通常对于一般变量的方法, 如直接为变量赋值、直接读取变量的值、使用isset()函数判 断其是否为Null值、使用unset()来注销变量等。 15.3 Zend_Sess

5、ion高级级用法 上一节介绍的是Zend_Session在会话处理方面的基本 应用。本节继续介绍该组件的高级应用。其内容包括开启会 话、锁定会话命名空间、会话过期、会话封装与控制器以及 防止一个会话命名空间的多重实例等部分。本节就以上列出 的这些内容逐一地作详细介绍。 15.3.1 开启会话话 如果程序需要所有的请求都通过会话的形式来管理,那 么则需要在程序最开始时就开启会话。要开启会话,可以使 用Zend_Session的静态方法start()。该方法是 Zend_Session类的静态方法,可以直接以 Zend_Session:start()的方式使用,另外该方法也不需要 任何参数。使用Z

6、end_Session有两种正确的开启会话的方 法。 1使用Zend_Session:start()开启会话。 2在需要会话的地方使用new Zend_Session_Namespace()。 15.3.2 锁锁定会话话命名空间间 为会话命名空间实例初始化对象并赋值之后,有时为了 特定的需要,会锁定会话命名空间,以防止其他内容对其值 进行更改。使用Zend_Session_Namespace的lock()方法 可以锁定会话命名空间(即将其值改为只读状态);使用 Zend_Session_Namespace的unLock()方法可以解除会话 命名空间实例的锁定状态。 另外还可以通过Zend_Se

7、ssion_Namespace的 isLocked()方法判断指定会话命名空间是否处于锁定状态。 该方法将根据其状态返回相应的布尔值。 15.3.3 为为会话设话设 置生命期 每个会话都有其生命期,默认的会话在关闭页面时结束 生命期。而通过Zend_Session_Namespace的 setExpirationSeconds()方法与setExpirationHops()方法 为每个会话设置生命期。两个方法的使用语法格式分别如下 所示。 setExpirationSeconds($seconds,$variables=null) setExpirationHops($hops,$variab

8、les=null,$hopCo untOnUsageOnly=false) 15.3.4 防止多重实实例 通常情况下,一个命名空间只允许使用一个实例,即通 常重名的命名空间是不被允许的。为了防止这种多重实例的 出现,可以在建立命名空间最后允许的实例时,传递True给 第二个构造函数参数。经过这样的操作,之后初始化同一个 命名空间都会导致一个异常的抛出,这样即可防止多重实例 。 15.4 对对全局会话话的管理 会话的默认行为可以由Zend_Session组件的一些静态 方法来改变。可以使用Zend_Session_Core:setOptions() 方法对PHP内置的会话模块的常用配置选项进行设

9、置。本节 就来介绍如何对全局会话进行管理。 15.4.1 配置选项选项 常用的配置选项有以下几种。 save_pathName save_handlerauto_start gc_probabilitygc_divisor gc_maxlifetimeserialize_handler cookie_lifetimecookie_path cookie_domaincookie_secure use_cookiesuse_only_cookies referer_checkentropy_file entropy_lengthcache_limiter cache_expireuse_tran

10、s_sid bug_compat_42bug_compat_warn hash_functionhash_bits_per_character 15.4.2 会话话生命期的补补充 通常情况下,用户代理结束时,(如当用户退出浏览器 )会话也会随之结束。然而,用户的应用程序可能通过持久 Cookies的使用来提供扩展用户会话超过客户端程序的生命 期的能力。在会话启动之后,以及会话Ccookie过期时间的 长度之前,使用Zend_Session:rememberMe()即可提供 这种能力。该方法的语法格式如下所示。 rememberMe($seconds) 15.4.3 Headers Alread

11、y Sent错误错误 在实例化会话命名空间或者其他PHP会话内容时,有 可能出现Headers Alerady Sent的错误。如果看到类似这 样的错误信息: Cannot modify header information - headers already sent 或者: You must call . before any output has been sent to the browser; output started in 15.5 小结结 本章介绍了Zend Framework中的会话处理( Zend_Session)组件。而Zend_Session_Namespace会 话命名空间则是该组件的核心。使用Zend_Session会话处 理,可以将用户的某些信息保存于服务器上,这种机制是实 现用户互动的一种解决方案。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号