第十二章会话管理2北京万博天地网络技术股份有限公司版权所有本章目标了解Cookie和Session的作用掌握Cookie的使用掌握Session的使用3北京万博天地网络技术股份有限公司版权所有本章内容12.3Cookie与Session比较12.2管理Session12.1管理Cookie4北京万博天地网络技术股份有限公司版权所有12.1管理Cookie什么是Cookie创建Cookie访问Cookie删除Cookie5北京万博天地网络技术股份有限公司版权所有12.1.1什么是Cookiecookie是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制Cookie是由Web服务器保存在用户浏览器上的小文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息6北京万博天地网络技术股份有限公司版权所有12.1.1什么是Cookie(续)Cookie的限制浏览器记录Cookie的容量不得大于4KB每个浏览器只能保存某个服务器上的20个Cookie每个用户的浏览器最多只能访问300个CookieCookie使用或禁用设置微软InternetExplorer浏览器工具Internet选项隐私页调节滑块或者点击“高级”,进行设置MozillaFirefox浏览器工具选项隐私设置Cookies选项设定阻止/允许的各个域内Cookie查看Cookies管理窗口,检查现存Cookie信息,选择删除或者阻止它们7北京万博天地网络技术股份有限公司版权所有12.1.2创建Cookiesetcookie()函数boolsetcookie(string$name[,string$value[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$httponly=false]]]]]])setrawcookie()函数boolsetrawcookie(string$name[,string$value[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$httponly=false]]]]]])8北京万博天地网络技术股份有限公司版权所有12.1.2创建CookieCookie工作时间设置Cookie工作时间可以使用两种形式•time()+秒数•mktime(时,分,秒,月,日,年)header()函数header()函数表示向客户端发送一个原始HTTP标头,必须在任何实际的输出被发送之前调用voidheader(stringstring[,boolreplace[,inthttp_response_code]])9北京万博天地网络技术股份有限公司版权所有12.1.3访问Cookie在PHP中可以通过$_COOKIE超级全局数组来访问Cookie的值设置php.ini中的register_long_arrays,能够应用$_COOKIE和$HTTP_COOKIE_VARS在php.ini中设置register_globals,可以在PHP中作为全局变量使用各个Cookie值更改php.ini中的文件设置,容易对PHP的安全构成威胁,不推荐使用该方法,建议使用$_COOKIE10北京万博天地网络技术股份有限公司版权所有12.1.4删除Cookie要删除一个已经存在的Cookie,有两个办法调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉设置Cookie的失效时间为time()或time()-1,Cookie在页面的浏览完之后就被删除,建议使用该方法11北京万博天地网络技术股份有限公司版权所有12.2管理Session启动Session调用Session变量销毁Session查看session_idsession_id的传送Session运行时配置常用Session函数12北京万博天地网络技术股份有限公司版权所有12.2.1启动Session在把用户信息存储到session中之前,首先必须启动会话Session将信息存储在服务器端,每一个链接进入网站服务器后便会产生一个Session。第一步就是告诉服务器要使用Session的功能来存储数据使用Session功能的方式有两种使用session_start()函数启动会话利用php.ini设置文件13北京万博天地网络技术股份有限公司版权所有12.2.2调用Session变量使用$_SESSION函数创建函数变量,其语法形式为$_SESSION[$sting]=$str;14北京万博天地网络技术股份有限公司版权所有12.2.3销毁Sessionunset()函数用于释放指定的session变量unset($_SESSION['views']);session_destroy()函数彻底终结sessionsession_destroy();15北京万博天地网络技术股份有限公司版权所有12.2.4查看session_id服务器利用不同的session_id来区别不同的Session,用户可以通过session_id()函数查看其本身使用的session_id,其结构形式如下session_id()16北京万博天地网络技术股份有限公司版权所有12.2.5session_id的传送通过cookie传送sessionid通过URL传送sessionid17北京万博天地网络技术股份有限公司版权所有12.2.6Session运行时配置PHP通过php.ini文件中的设置对Session中的部分参数值及函数进行定义18北京万博天地网络技术股份有限公司版权所有12.2.7常用Session函数函数说明boolsession_start(void)初始化sessionboolsession_destroy(void)删除服务器端session关联文件stringsession_id()当前session的idstringsession_name()当前存取的session名称,也就是客户端保存sessionID的cookie名称.默认PHPSESSIDarraysession_get_cookie_params()与这个session相关联的session的细节stringsession_cache_limiter()控制使用session的页面的客户端缓存inisession_cache_expire()控制客户端缓存时间boolsession_destroy()删除服务器端保存session信息的文件voidsession_set_cookie_params(intlifetime[,stringpath[,stringdomain[,boolsecure[,boolhttponly]]]])设置与这个session相关联的session的细节boolsession_set_save_handler(callbackopen,callbackclose,callbackread,callbackwrite,callbackdestroy,callbackgc)定义处理session的函数boolsession_regenerate_id([booldelete_old_session])分配新的sessionid19北京万博天地网络技术股份有限公司版权所有12.3Cookie与Session比较具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择20北京万博天地网络技术股份有限公司版权所有12.3Cookie与Session比较(续)cookie和session的区别cookie数据存放在客户的浏览器上,session数据放在服务器上cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用sessionsession会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用cookie单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的cookie不能超过3K21北京万博天地网络技术股份有限公司版权所有本章总结Cookie和Session的作用Cookie的使用Session的使用