第11章Session与Cookie.ppt

上传人:sccc 文档编号:6109732 上传时间:2023-09-25 格式:PPT 页数:16 大小:166.05KB
返回 下载 相关 举报
第11章Session与Cookie.ppt_第1页
第1页 / 共16页
第11章Session与Cookie.ppt_第2页
第2页 / 共16页
第11章Session与Cookie.ppt_第3页
第3页 / 共16页
第11章Session与Cookie.ppt_第4页
第4页 / 共16页
第11章Session与Cookie.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第11章Session与Cookie.ppt》由会员分享,可在线阅读,更多相关《第11章Session与Cookie.ppt(16页珍藏版)》请在三一办公上搜索。

1、第11章 Session与Cookie,Web应用程序有一个很重要的特性就是可以记录用户的状态。例如,在论坛中,当用户登录之后,可以记录用户的登录状态,甚至还能记录当前用户所在的论坛版块。要实现这样的功能通常需要通过某种载体来保存此类信息。而最常使用的存储载体有Session与Cookie两种。本章将详细讲解如何在PHP中使用Session与Cookie。,11.1 Session与Cookie简介,Session与Cookie都属于会话处理机制范畴。在计算机编程中会话是一种面向连接的可靠通信方式,而会话处理机制就指编程语言实现基于会话的通信的方式。本节将向读者介绍何为Session,什么是C

2、ookie,以及这两种会话处理机制的区别与联系。通过本节内容的学习,读者将会对Session与Cookie有一个大致的认识。为后两节具体学习Session与Cookie的实际使用,打下一个理论的基础。,11.1.1 什么是Session,在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。1Session的作用具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中可以看到,从其实质上来说,Session实际是一个特定

3、的时间概念。2Session解决方案那什么是Session的解决方案呢?我们知道,用户访问一个网站时往往需要浏览许多网页。对于一个通过PHP构筑的网站来说,用户在访问的过程中需要执行许多PHP脚本。然而由于HTTP协议自身的特点,用户每执行一个PHP脚本都需要和Web服务器重新建立连接。,11.1.2 什么是Cookie,Cookie是当用户浏览某网站时,网站存储在客户机器上的一个小文本文件。该文件记录了用户的用户ID、密码、浏览过的网页、停留的时间等信息。当用户再次来到该网站时,网站通过读取Cookie,得知用户的相关信息,就可以做出相应的动作。例如,在页面显示欢迎的标语,或者可以使用用户不

4、用输入ID、密码就直接登录等等。使用Windows操作系统的用户可以使用以下方法查看Cookie信息。(1)单击IE浏览器的工具菜单下的Internet选项子菜单,打开Internet选项对话框。(2)单击“常规”选项卡中的设置按钮,将打开设置对话框。(3)单击设置对话框中的查看文件按钮,将会定位到保存Cookie的目录以查看所有保存到电脑里的Cookie。Cookie文件通常是以userdomain格式命名的。user是你的本地用户名,domain是所访问的网站的域名。如果用户使用NetsCape浏览器,Cookie则被存放在“C:PROGRAMFILESNETSCAPEUSERS”里面。与

5、IE不同的是,NETSCAPE是使用一个Cookie文件记录所有网站的Cookies。,11.1.3 Session和Cookie区别与联系,Session和Cookie都是会话处理机制。二者之间存在差别,但也有一定的联系。本小节就来结合前两小节介绍的内容,具体分析二者的区别与联系。Session与Cookie的共同点为:二者都同为会话处理机制,都可以用来存私密的东西,也同样也都有有效期的概念。Session与Cookie的区别主要体现在以下几个方面:Cookie数据存放在客户的浏览器上,Session数据放在服务器上。Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cook

6、ie欺骗。而Session由于保存在远程服务器上,相对比较安全。考虑到安全性应当使用Session。由于Session会在一定时间内保存在服务器上。当服务器的访问增多时,会占用服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie。单个Cookie在客户端的限制是3K,就是说一个站点在客户端存放的Cookie不能超过3K。而Session则没有这方面的限制。Cookie的使用与浏览器的设置有关,如果用户禁用了Cookie则所有基于Cookie的应用都将失败。而Session则与客户端的配置无关,所以大可放心的使用而不必关心客户端的配置情况。,11.2 Session的使用,通过上一节的介

7、绍,读者可以了解到Session是将数据存放于服务端的一种会话处理机制。使用Session可以增强用户登录注册系统的安全性。本节将具体介绍在PHP中如何使用Session。,11.2.1 如何使用Session,在PHP中要使用Session可以分为:启动Session、注册Session、调用Session以及关闭Session这几步,本节将分别向读者作介绍。1启动Session在使用Session前,首先需要使用函数session_start()来启动该Session。该函数的使用格式如下。bool session_start()2注册SessionSession在启动之后,就可以通过函数

8、session_register()来注册Session变量。该函数的语法格式如以下代码所示。bool session_register(mixed name,mixed.)3调用Session如果php的配置没有开启register_globals(自动全局变量开关),则只可以用_SESSION数组来引用Session变量。例如,var只能这样引用$_SESSIONvar,而如果开启了register_globals选项,则可以直接用$var。4关闭Session如果Session不再需要使用时,可以通过函数session_destroy()来关闭一个Session。此时该Session必须

9、是已经开启的。该函数的使用格式如以下代码所示。bool session_start(),11.2.2 检查指定变量是否为Session,由于定义Session方式的不同,判断Session的方法页不尽相同。下面分别讲解两种常用的检查方法。1以函数定义的Session的判断方法当Session使用session_register()定义时,应该使用session_is_registered()函数进行检查。该函数的使用格式如以下代码所示。bool session_is_registered(string name)2使用$_SESSION直接赋值的Session的判断方法如果Session使用了

10、$_SESSION这样的赋值形式直接,需要使用isset()函数来判断指定变量是否定义。bool isset(mixed var,mixed var,.),11.2.3 获取或者设置Session的保存路径,在PHP中不仅可以对Session进行通常的操作,也可以通过函数对有关Session的配置情况进行读写操作。在使用Session时其保存路径就是一个相当重要的信息,即php.ini中的session.save_path。如果该选项配置不当,将直接导致Session不能使用。要想获取或者设置Session的保存路径,可以通过函数:session_save_path()来实现,该函数使用格式如

11、下所示。string session_save_path(string path),11.2.4 释放Session变量,在使用Session结束后,出于安全性及节约系统资源的考虑可以将Session中的某一个或者全部Session释放。Session的注册方法不同,则其注销(释放)方法也同。本节分别为读者作介绍。1以函数定义的Session的注销方法如果采用session_register()注册的函数,需要用函数:session_unregister()进行注销。该函数的使用格式如下代码所示。bool session_unregister(string name)2使用$_SESSION直

12、接赋值的Session的注销方法采用直接给$_SESSION变量赋值的形式来注册的Session,在注销时也需要使用函数:unset()。在使用unset()时需要注意,只需要把指定变量作为参数即可,如:unset($_SESSIONname)。而不需要把$_SESSION作为参数,因为这样将把所有Session全部注销。,11.3 Cookie的使用,在PHP中使用Cookie可以简单分为:注册Cookie与引用Cookie这两步。注册Cookie就是定义Cookie变量;而引用Cookie即实际调用Cookie变量。本节将详细为读者介绍这两部分内容。,11.3.1 注册Cookie,在PH

13、P中要把某个变量注册为Cookie,只需要通过调用函数:setcookie()即可实现。该函数的使用格式如下代码所示。bool setcookie(string name,string value,int expire,string,path,string domain,bool secure,bool httponly)该函数将定义一个Cookie全局变量并伴随HTTP头信息一起发送。在使用此函数时需要特别注意:该函数前不能有任何的输出内容,包括HTML标记。即使是代码中多出的空格也是不允许的。所以,如果要使用此函数,建议将其放在脚本的第一行。函数将会返回一个布尔值,如果成功发送则返回Tru

14、e,反之则返回False。函数各个参数及其含义如表所示。,11.3.2 引用Cookie,注册Cookie后,就可以引用所注册的Cookie。在前面章节中曾提及一个自动全局变量$_COOKIE。该变量为用户已经注册的Cookie数组。而调用相关的Cookie值就是调用该数组元素。具体操作如下:如果已经定义了一个名为:user的Cookie值。则在调用时就使用$_COOKIEuser这样的形式即可。下面的代码实现了对已经定义的Cookie值的调用:,11.3.3 为Cookie设定生命期,通常的Cookie都有生命期即存在时间。一过生命期,Cookie就会被自动删除。当然用户也可以手动删除,Co

15、okie直接结束Cookie的生命期。例如,在论坛登录系统中,经常需要设定用户的登录有效期。本节就来介绍下如何为Cookie设置生命期。在11.3.1小节中介绍setcookie()函数时提到函数的第三个参数:expire。该参数即是为Cookie设定的过期时间,以秒作为计量单位。比如在使用setcookie()时当把该参数设为:3600,则所注册的Cookie将后在注册一小时后失效。如果省略该参数,则Cookie只在浏览器打开时有效,一旦关闭浏览器窗口,所设置的Cookie就会失效。另外,把expire设置为过去的时间,如time()-1,则Cookie也会在浏览器关闭时失效。下面通过实例来

16、说明如何为Cookie设定生命期。,11.3.4 Cookie使用实例,本节来介绍一个非常实用的PHP使用Cookie的实例。该实例实现通过Cookie来改变网站的风格布局这样的功能。用户在浏览一些网站或者论坛时,会发现有些此类网站提供有类似软件的换肤功能。该功能的实现一方面依靠CSS(Cascading Style Sheets,层叠样式表技术),另一方面也需要结合Cookie来实现。本节就通过一个实例来说明,如何在PHP中使用CSS样式表和Cookie来实现网页(站)的换肤功能。在使用此代码前先建立如下几个CSS样式表文件,以备后用。,11.4 本章小结,本章向读者介绍了在PHP中如何使用Session与Cookie这两种会话处理机制。处理用户会话是与用户进行互动的最有效的方法,善于使用用户会话处理,才能使程序更加人性化。读者在使用Session与Cookie有个问题需要在结束时再次强调一下。那就是不管是session_start()函数,还是setcookie()函数,它们都属发送头部信息一类的函数,因此在这些函数执行前,页面中不能有任何的输出内容包括空格,否则将会出现错误提示。这一点一定要引起用户的注意。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号