9php网络开发教程.ppt
温故,上节课程学习了什么?1.WEB中的一般知识2.什么是HTTP头信息3.在PHP中实现网页的重定向4.调用HTTP头实现不同文件的现实5.实现文件的下载功能6.EGPCS变量信息,知新,这节课,我们将学习到以下内容:1.WEB中SESSION的原理2.SESSION的使用3.使用SESSION实现用户登陆4.COOKIE的原理5.COOKIE的使用6.COOKIE使用实例,第七章 WEB技术,1.HTTP通信状态,Drop Connection,第七章 WEB技术,通过上面一个模拟HTTP通信的过程,大家应该能够发现,HTTP是一个无状态协议,这就意味着一旦Web服务器完成了客户端的Web页面请求后,他们之间的连接也就断开了。这就意味着没有办法使得服务器识别来自于同一个客户端的一系列请求。,第七章 WEB技术,但是,在我们的实际应用中,状态是必须的,例如,如果你不能跟踪来自同一个用户的一系列请求,你就无法设计一个购物车程序。因为你需要知道什么时候添加了一个什么物品。就无法判断用户是否已经登陆或需要注册等等。,第七章 WEB技术,为了解决这一系列的问题,一个最初由网景构思的超强解决方案诞生了,它就是被命名为cookies的一种状态管理机制。Cookies是对HTTP协议的扩充。更确切地说,它们由两个HTTP头部组成:Set-Cookie响应头部Cookie请求头部。,第七章 WEB技术,当客户端发出对一个特定URL的请求时,服务器会在响应时选择包含一个Set-Cookie头部。它要求客户端在下面的请求中包含一个相应的Cookie头部。,第七章 WEB技术,由于服务器发送了一个set-cookie的HTTP头给了客户端,客户端在此时已经相应的生成了Cookie。,现在已经生成COOKIE的客户端再次向服务器提出请求时,COOKIE请求头部将会自动跟请求一起到达服务器端,服务器就可以标示出访问服务器的客户端了。,第七章 WEB技术,通过刚才的示例图,我知道了可以通过COOKIE让服务器“认得”客户端了。这一过程就叫做状态维持。说了这么多,到底COOKIE是一个什么东西?Cookie是一个包含多个字段的字符串,它以一个小文本的形式保存在客户端。,第七章 WEB技术,揭开COOKIE的神秘面纱:COOKIE在哪里?COOKIE被保存在客户端,如果你使用的是Windows,那么你可以在你的用户文件夹中找到他。,第七章 WEB技术,找到了COOKIE,我们会发现COOKIE的命名都是有一定的规则的,一般是操作系统的用户名加上站点的域名,比如说:administratorsuperich.org这个名字看着有点象电子邮件的格式,那么我们现在可以把这个文件打开看看里面到底是个什么东西。,第七章 WEB技术,第七章 WEB技术,在PHP中,如何向客户端发送一个COOKIE呢?我们可以在PHP使用setcookie函数来向浏览器发送一个cookie。语法为:Setcookie(变量名,值,过期时间);向客户端发送一个COOKIE。在这里要注意,过期时间是以GMT的1970年1月1日为基础的,单位是秒。当时间超过后这个COOKIE将不再可用。,第七章 WEB技术,当我们执行了这个程序后,可以发现在COOKIE文件夹中多了一个COOKIE文件。这个COOKIE的过期时间就是1个小时之后。,第七章 WEB技术,使用已经设置的COOKIE的值在PHP中可以使用我们原来学过的EGPCS变量中的$_COOKIE来取得。语法为:$_COOKIE变量名,第七章 WEB技术,第七章 WEB技术,上面我们讲了怎么向客户端发送一个COOKIE并且从COOKIE中读取保存的信息,那我们来想一想,如何从客户端删除已前设置的COOKIE呢?在我们设置COOKIE时,必须要设置COOKIE的过期时间,那么现在我们要删除COOKIE就可以通过这个时间来控制。,第七章 WEB技术,这样就可以清除我们留在客户端的COOKIE文件了。,第七章 WEB技术,在使用COOKIE时应注意以下问题:1.COOKIE的最大长度理论上为4KB,实际使用中,COOKIE的最大长度不要超过3.5KB2.COOKIE是保存在客户端的,当客户端如果禁止了COOKIE功能,将无法将任何信息保存。3.COOKIE中不要显式的存放密码,银行卡号等比较敏感的数据。,第七章 WEB技术,在PHP中,状态维持除了可以使用COOKIE外还可以使用会话来替你处理相关COOKIE的操作。,第七章 WEB技术,当用户第一次访问时,都会得到一个唯一的会话ID,在默认情况下,这个ID存储在客户端的COOKIE中,如果客户端不支持COOKIE则回话ID将被传送到Web站点的URL内。在服务器端,SESSION将以一个文件的形式保存。所有的SESSION变量都以名称和值的形式写在这个文件中。,第七章 WEB技术,开始使用SESSION在使用SESSION之前,必须首先打开SESSION,语法:Session_start();打开SESSION功能,如SESSION文件不存在则创建该文件,如果SESSION文件存在,则将里面的变量信息读入到$HTTP_SESSION_VAR中去。,第七章 WEB技术,通过以上的函数,我们已经打开了SESSION但是我们并没有注册任何的SESSION变量,要注册SESSION变量,可以通过以下语句Session_register(变量名)注册一个相应变量名的SESSION变量。注意,SESSION变量必须先注册后再使用。,第七章 WEB技术,第七章 WEB技术,运行上面的程序,我们发现,SESSION文件已经生成,在文件中发现变量名已经被注册但是并没有值。因为我们并没有为那个SESSION变量赋值。要为一个SESSION变量赋值,可以使用$_SESSION数组。$_SESSION变量名=值;,第七章 WEB技术,第七章 WEB技术,我们上面学习了如何注册一个SESSION变量并可以给SESSION赋值了,如果要删除一个SESSION变量,可以使用Session_unregister(变量名)删除一个已注册的SESSION变量。,第七章 WEB技术,我们还可以在程序运行时检查一个SESSION变量是否被注册。语法为:Session_is_registered(变量名)检查一个SESSION变量名是否已经被注册。,第七章 WEB技术,除了可以使用session_unregister函数取消一个已注册的SESSION变量外,还可以使用Session_destroy来清空所有的SESSION信息并清除SESSION文件。语法为:Session_destroy();释放SESSION。所有的SESSION变量将会被清除,并清除服务器端的SESSION文件,第七章 WEB技术,通过上面的讲述,我们已经基本了解了SESSION函数的使用,但是在使用SESSION时还需要注意以下问题:1.session_start函数必须放在任何输出之前。2.Session变量必须先申明再使用。3.申明SESSION变量时只能申明变量名,要为变量赋值,应该在变量名申明后使用$_SESSION变量名,第七章 WEB技术,我们这节课学习了COOKIE和SESSION,我们发现,COOKIE和SESSION是非常相似的,但是2者之间也存在着很大的区别。想一想,SESSION和COOKIE有什么区别?,第七章 WEB技术,1.保存位置不同。SESSION是保存在服务器端,而COOKIE是保存在客户端。2.容量不同。COOKIE最多可以保存4KB的数据,而SESSION可以保存任意多的数据,但需要注意的是,SESSION越大占用服务器内存就越多。3.有效范围不同。,第七章 WEB技术,Cookie保存在客户端,如果COOKIE已经保存在客户端,并且还没有过期,那么不论你什么时候再去浏览先前给你生成COOKIE的站点,服务器都能辨别你。而SESSION可以理解成一个跟踪的过程,当你访问的网站给你生成SESSION后,一直到你离开网站,SESSION都可以始终跟随你但是一旦你离开那个网站,SESSION也就失效了。SESSION是一个连续的过程。,总结,在这节课中,我们学到了以下内容:1.WEB中SESSION的原理2.SESSION的使用3.使用SESSION实现用户登陆4.COOKIE的原理5.COOKIE的使用6.COOKIE使用实例,回顾,在本节课中,涉及到的函数如下:Setcookie()设置COOKIESession_start()打开SESSIONSession_register()注册SESSION变量Session_unregister取消SESSION变量session_destroy()释放SESSIONSession_is_registered检测SESSION变量是否被注册,作业,改进上次所做的文件下载加入用户注册,用户资料修改,用户密码修改,找回密码等功能。在下载中加入身份认证、防盗链等功能。,