php基础教学课件-12.会话控制_第1页
php基础教学课件-12.会话控制_第2页
php基础教学课件-12.会话控制_第3页
php基础教学课件-12.会话控制_第4页
php基础教学课件-12.会话控制_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PHP会话控制后盾网 2012-2013 v2.0 后盾网 人人做后盾编辑课件HTTP特性无状态无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快;无状态性客户端与服务器端连接通信运行速度快,服务器应答也快。因为无状态,协议对事务处理是没有记忆性的是独立的。所以为了满足后面事务需要前面的事务有关信息,所以事务有关的信息要在协议外发送编辑课件COOKIECookie最早是网景公司的前雇员Lou Montulli在1993年3月发明。Cookie是当用户浏览某网站时,

2、服务器存储在用户机器上的一个小文本文件,再次来到该网站时,网站通过读取Cookie,得知用户的相关信息,就可以做出相应的动作;Cookie传递Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到用户的浏览器,浏览器会根据用户电脑中的Cookie设置选择是否保存这些数据。如果浏览器不允许Cookie保存,则关掉浏览器后,这些数据就消失;编辑课件COOKIE生命周期Cookie有一个Expires(有效期)属性,这个属性决定了Cookie的保存时间,服务器可以通过设定Exp

3、ires字段的数值,来改变Cookie的保存时间如果不设置该属性,或设为0,那么Cookie只在浏览网页期间有效,关闭浏览器,这些Cookie自动消失编辑课件COOKIE浏览器处理Cookie方式数量各个浏览器中会不同,同一浏览器版本也不同IE8允许每个域保存50个cookieFirefox允许每个域保存50个cookie大小:一般来说允许4Kb,不同浏览器,不同版本略有不同当Cookie的数量达到上限时的删除方式1:将最近使用最少的Cookie删除2:随机删除编辑课件生成COOKIEsetcookie ( string name , string value , int expire , s

4、tring path , string domain , bool secure )name Cookie 的名字value Cookie 的值 expire Cookie 过期的时间 path Cookie 在服务器端的有效路径 domain 该 cookie 有效的域名 secure 指明 cookie 是否仅通过安全的 HTTPS 连接传送。当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为 FALSE;第七个参数设为true后,只能通过http访问,javascript无法访问编辑课件COOKIE数组或对象操作数组$_COOKIEa=111;$_COOKIEb=222

5、;$_COOKIE1=111;$_COOKIE2=666;操作对象通过序列化实现serialize()string serialize ( mixed $value )产生一个可存储的值的表示unserialize()mixed unserialize ( string $str , string $callback )从已存储的表示中创建 PHP 的值编辑课件SESSIONSession从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分;Session会话时,SessionID会分别保存在客

6、户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中;Session通过ID接受每一个访问请求,从而识别当前用户、跟踪和保持用户具体资料,以及Session变量(在Session活动期间,可在Session中存储数字或文字资料),比如session_name等等,这些变量信息保存在服务器端编辑课件SESSIONsession_start()开始一个会话或者返回已经存在的会话,判断客户端有无session_id,如果没有,在服务器端写入SESSION文件(或者通过数据

7、库等完成)发送写session_id的cookie头信息。如果有客户端发来的session_id则找相应session数据session使用方法同get post等使用方法相同,$_SESSIONvar即可使用更改session_id()session_regenerate_id() 更改成功则返回true,失败则返回false。更改session_id,但不改变当前session的其他信息session_name()返回当前session的name或改变当前session的name编辑课件SESSION传递方式通过COOKIE传递通过URL地址栏传递 定义普通GET变量定义session_n

8、ameSID常量等于 isset($_COOKIEsession_name()?define(cc, ):define(cc, session_name().=.session_id()隐藏表单域设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了-enable-trans-sid选项,让PHP自动跨页传递session id如果在session_start();之前加代码session_id($sessionid);将不产生新的session文件,直接读取与这个id对应的session文件编辑课件清除SESSIONunset($_SESSIONweb)

9、/删除session变量$_SESSION = array()/删除所有session变量, 不删除session文件session_unset()/释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session idsession_destroy()/删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留释放用户的 session 所有资源session_unset()session_destroy()编辑课件配置文件设置SESSION环境session_save_path会话数据的路径。如

10、果指定的路径,将数据保存到路径中; = PHPSESSID用在cookie里的会话ID标识名,只能包含字母和数字编辑课件配置文件设置SESSION环境session.use_cookies = On是否使用cookie在客户端保存会话IDsession.use_only_cookies = Off是否仅仅使用cookie在客户端保存会话ID。PHP6的默认值为Onsession.cookie_lifetime = 0传递会话ID的Cookie有效期(秒),0 表示仅在浏览器打开期间有效session.cookie_path = /传递会话ID的Cookie作用路径编辑课

11、件配置文件设置SESSION环境session.cookie_domain =传递会话ID的Cookie作用域。默认为空表示根据cookie规范生成的主机名session.cookie_secure = Off是否仅通过安全连接(https)发送cookiesession.cookie_httponly = Off是否在cookie中添加httpOnly标志(仅允许HTTP协议访问),这将导致客户端脚本(JavaScript等)无法访问该cookiesession.use_trans_sid = Off是否使用明码在URL中显示SID(会话ID)。默认是禁止的,因为它会给你的用户带来安全危险编

12、辑课件配置文件设置SESSION环境session.save_path = /tmp传递给存储处理器的参数。你可以使用N;MODE;/path这样模式定义该路径(N是一个整数)。 N表示使用N层深度的子目录,而不是将所有数据文件都保存在一个目录下。MODE;可选,必须使用8进制数,默认600,表示文件的访问权限 = PHPSESSID用在cookie里的会话ID标识名,只能包含字母和数字session.auto_start = Off在客户访问任何页面时都自动初始化会话,默认禁止。 因为类定义必须在会话启动之前被载入,所以若打开这个选项,你就不能在会话中存放对象编辑课件配置文件设置SESSIO

13、N环境session.serialize_handler = php用来序列化/解序列化数据的处理器,php是标准序列化/解序列化处理器。session.gc_probability = 1session.gc_divisor = 100定义在每次初始化会话时,启动垃圾回收程序的概率。 这个收集概率计算公式如下:session.gc_probability/session.gc_divisor; 对会话页面访问越频繁,概率就应当越小。建议值为1/10005000编辑课件配置文件设置SESSION环境session.gc_maxlifetime = 1440超过此参数所指的秒数后,保存的数据将被

14、视为垃圾并由垃圾回收程序清理。 判断标准是最后访问数据的时间(对于FAT文件系统是最后刷新数据的时间)。 如果多个脚本共享同一个session.save_path目录但session.gc_maxlifetime不同, 那么将以所有session.gc_maxlifetime指令中的最小值为准。 如果使用多层子目录来存储数据文件,垃圾回收程序不会自动启动。 你必须使用一个你自己编写的shell脚本、cron项或者其他办法来执行垃圾搜集;编辑课件PHP垃圾回收机制什么是垃圾没有任何变量指向这个对象时,即为垃圾。PHP会自动从内存中将其销毁,防止内存溢出。当一个PHP线程结束时,当前所有占用的内存

15、都会被销毁_destruct()析构函数,在垃圾对象被回收时执行引用计数器每个对象都包含一个引用计数器,每个引用连接对象时,计数器+1。当引用离开生存空间或设为NULL时,计数器减1。当某个对象计数器为0时,启动垃圾回收器,释放其所占用的空间编辑课件PHP垃圾回收机制$a = 100;在内容中开辟空间保存100。用PHP内部符号表的$a指向内存地址,方便依据符号操作内存;unset()即断开符号表与内容地址的关系。将计数器-1;NULL即直接将内容引用计数器清为0;编辑课件SESSION的垃圾回收机制PHP的工作机制它并没有一个daemon线程来定期的扫描Session信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论