PHP与动态网页环境的.ppt

上传人:sh****n 文档编号:11549633 上传时间:2020-04-28 格式:PPT 页数:72 大小:1.44MB
返回 下载 相关 举报
PHP与动态网页环境的.ppt_第1页
第1页 / 共72页
PHP与动态网页环境的.ppt_第2页
第2页 / 共72页
PHP与动态网页环境的.ppt_第3页
第3页 / 共72页
点击查看更多>>
资源描述
第7章PHP与动态网页环境的交互72-,1,第7章PHP与动态网页环境的交互,网页设计与编程,第7章PHP与动态网页环境的交互72-,2,第7章PHP与动态网页环境的交互,联机编辑服务器上的文档HTTP认证网页重定向保存Web交互信息的技术Cookie与Session的应用,第7章PHP与动态网页环境的交互72-,3,本章教学目标,了解利用PHP作为CGI来解决网络应用专题:网络操作系统中的文件处理;HTTP无状态问题的解决方案;浏览器类型的探测等。通过phpinfo()函数,系统了解服务器、PHP和浏览器等Web环境参数,并在CGI程序设计中加以应用,第7章PHP与动态网页环境的交互72-,4,联机编辑服务器上的文档,制作一个具有联机编辑服务器文档的网页。这个网页可以打开Web服务器上所要修改的文档,进行编辑和修改,完成后再保存和更新由于网页的编辑是在TEXTAREA框中完成的,所以编辑时可以使用一些编辑软件常见的功能,如复制和粘贴等,第7章PHP与动态网页环境的交互72-,5,联机编辑服务器上的文档,主要解决的问题:PHP中的文件操作网络操作系统需要注意的文件操作问题通过远程系统编辑系统文件,第7章PHP与动态网页环境的交互72-,6,PHP中的文件操作-打开文件,fopenfopen-OpensfileorURLDescriptionintfopen(stringfilename,stringmode,intuse_include_path)fopen()将filename指定的名字资源绑定到一个流上如果PHP认为filename指定的是一个本地文件,将尝试在该文件上打开一个流该文件必须是PHP可以访问的,因此需要确认文件访问权限允许该访问,第7章PHP与动态网页环境的交互72-,7,Fopen:Mode参数的意义,第7章PHP与动态网页环境的交互72-,8,PHP中的文件操作-关闭文件,fclose-关闭一个已打开的文件指针说明boolfclose(resourcehandle)将handle指向的文件关闭如果成功则返回TRUE,失败则返回FALSE文件指针必须有效,并且是通过fopen()或fsockopen()成功打开的,第7章PHP与动态网页环境的交互72-,9,PHP中的文件操作-判断文件类型,filetype-取得文件类型说明stringfiletype(stringfilename)可能的值有fifo,char,dir,block,link,file和unknown;如果出错则返回FALSE,第7章PHP与动态网页环境的交互72-,10,PHP中的文件操作-读文件内容,fread-读取文件说明stringfread(inthandle,intlength)fread()从文件指针handle读取最多length个字节;该函数在读取完length个字节数,或到达EOF的时候就会停止读取文件,视乎先碰到哪种情况,第7章PHP与动态网页环境的交互72-,11,读文件内容的PHP程序举例,第7章PHP与动态网页环境的交互72-,12,PHP中的文件操作-写入文件内容,fwrite-写入文件说明intfwrite(resourcehandle,stringstring,intlength)fwrite()把string写入文件指针handle处如果指定了length,当写入了length个字节或者写完了string以后,写入会停止,视乎先碰到哪种情况,第7章PHP与动态网页环境的交互72-,13,PHP中的文件操作-删除文件,unlink-删除文件说明boolunlink(stringfilename)删除filename,如果成功则返回TRUE,失败则返回FALSE,第7章PHP与动态网页环境的交互72-,14,【例7-1】选择文档的表单,第7章PHP与动态网页环境的交互72-,15,第7章PHP与动态网页环境的交互72-,16,【例7-3】保存修改过的文件,第7章PHP与动态网页环境的交互72-,17,【例7-3】保存修改过的文件,第7章PHP与动态网页环境的交互72-,18,Unix系统的文件操作权限,第7章PHP与动态网页环境的交互72-,19,Unix系统的文件操作权限,在unix系统中如果需要通过网页来编辑文件,需要用chmod命令来改变文件的操作权限,如$chmod777index.txt将所有类型用户对index.htm文件的所有操作都可以进行,自然也就可以通过远程方式对服务器内的index.htm文件进行编辑和存盘,第7章PHP与动态网页环境的交互72-,20,HTTP认证,HTTP身份认证功能是指客户端浏览器弹出一个会话框,要求用户输入用户名和密码。这种认证方式在许多会员制网站和对用户浏览模式进行调查的站点中应用十分普遍用户还可以在网站上增设一些管理网页,也要使用身份认证来保证只有管理员才可以进入,而其它用户访问不到这些网页,第7章PHP与动态网页环境的交互72-,21,HTTP认证,HTTP身份认证功能可以通过PHP的Header()函数向客户端浏览器发送一个“AuthenticationRequired”的报文,浏览器便会弹出一个会话框,要求客户输入用户名及密码通过验证后服务器端将会再次调用后续的PHP程序程序,并将用户输入的用户名和密码分别赋给PHP的内置变量$PHP_AUTH_USER和$PHP_AUTH_PW,将身份认证类型赋给变量$PHP_AUTH_TYPE,第7章PHP与动态网页环境的交互72-,22,;echo请记住你的密码:$PHP_AUTH_PW;?,第7章PHP与动态网页环境的交互72-,23,isset函数,isset-检测变量是否设置描述boolisset(mixedvar,mixedvar,.)如果var存在则返回TRUE,否则返回FALSE,第7章PHP与动态网页环境的交互72-,24,Header函数,header-发送原始的HTTP首部说明voidheader(stringstring,boolreplace,inthttp_response_code),第7章PHP与动态网页环境的交互72-,25,HTTP认证,第7章PHP与动态网页环境的交互72-,26,HTTP认证,第7章PHP与动态网页环境的交互72-,27,HTTP认证,由于IE浏览器对HTTP首部数据的顺序要求很严格,所以在使用Header()函数时,必须在发送“HTTP/1.0”的请求报文首部数据之前发送“WWW-Authenticate”首部数据当用户输入用户名和密码后,IE会把用户身份认证信息自动缓存在浏览器所在的客户端上。当再次遇到HTTP首部数据时,用户不需要再次输入密码,浏览器便自动将上次输入的密码发送到服务器端,该用户的身份认证信息直到关闭浏览器后才被清除,第7章PHP与动态网页环境的交互72-,28,HTTP认证,可以看出,当应用程序取得了$PHP_AUTH_USER和$PHP_AUTH_PW两个变量之后,可以通过编写程序来判断用户名和密码正确与否,并可完成基于用户权限的操作比如使用用户名和密码去查找数据库中的合法用户记录,或针对不同的用户显示不同的信息等,第7章PHP与动态网页环境的交互72-,29,网页重定向,网站内容和布局往往是动态的,许多用户对网站服务内容的了解不是通过网站的超链,而是通过传统媒体(如书籍和杂志)由于各种原因,一些网站的内容布局可能变动或关闭,那么,通过网页重定向,可以将寻求此类服务的用户自动转到其他相关的网页,第7章PHP与动态网页环境的交互72-,30,网页重定向,重定向程序(文件名:redirection.php)n;echo网页重定向程序;echon;echo重定向到?n;echo;echon;echo;?,第7章PHP与动态网页环境的交互72-,31,网页重定向,第7章PHP与动态网页环境的交互72-,32,网页重定向,第7章PHP与动态网页环境的交互72-,33,保存Web交互信息,众所周知,HTTP协议是一种无状态的协议。换言之,Web服务器把每个客户端的每次访问,都当作独立的访问而从不维持和记录前序的访问信息,哪怕这个访问发生在一秒钟之前这样,访问某个网站的过程,对客户来说是连续的,有规律的;但对Web服务器来说,它是由很多次的互不相干的连接请求所组成的,第7章PHP与动态网页环境的交互72-,34,保存Web交互信息,HTTP的这个缺点所造成的尴尬情况有:一个要用户名和口令才能访问的站点:服务器不知道新的请求是谁发出的,更不知道这个客户是否已经通过了验证,于是客户每访问一个网页,都要把自己的名字和口令输入一次网上商城:客户已经订了一件产品,然后又看到一件满意的,就想把它再买下来。服务器却管不了那么多:只知道这次他订了一件,至于该客户前面是否订过什么,却不知道,第7章PHP与动态网页环境的交互72-,35,保存Web交互信息,这些情况就是在Web服务过程中,如何维护不同的访问者信息。这些信息在Web应用开发、和网站营运中意义重大在Web服务过程中的信息维护,目前采用的方法一般有两类CookieSession,第7章PHP与动态网页环境的交互72-,36,Cookie的基本工作原理,Cookie技术是将Web服务信息存储在客户端主机上,用一种称为“Cookie”的文件单元进行存储当用户对某个网站反复进行访问时,服务器端的程序可以请求浏览器(注意在这里的C/S关系似乎被颠倒了过来)将必要的信息保留在有特定标识的Cookie文件中,第7章PHP与动态网页环境的交互72-,37,Cookie的基本工作原理(续),一般不加说明的话,Cookie文件在一次Web会话(连续对某个特定网站的访问)结束后立即删除但许多网站不仅希望“一次性”使用Cookie,而是希望借助Cookie做更多的工作:保留客户最近一次访问站点的时间;会员制方式管理的网站希望保留客户的登录名或口令搜索网站希望保留用户以往使用过的关键词等。实际上,要作到这一点,只要在建立Cookie时加上有效时间参数即可,第7章PHP与动态网页环境的交互72-,38,各位计算机里的Cookie,第7章PHP与动态网页环境的交互72-,39,Cookie的样例,第7章PHP与动态网页环境的交互72-,40,设置cookie,使用cookie前必须设置cookie.函数格式:intsetcookie(stringname,stringvalue,intexpire,stringpath,stringdomain,intsecure)其中,除name外,所有的参数都是可选的,可以用空的字符串表示未设置,第7章PHP与动态网页环境的交互72-,41,setcookie举例,简单的:setcookie(mycookie,value_of_mycookie);带失效时间的:setcookie(“withExpire”,“Expire_in_1_hour”,time()+3600);全参数:setcookie(FullCookie,Full_cookie_value,time+3600,/forum,1);,第7章PHP与动态网页环境的交互72-,42,cookie的一些特点,cookie是面向路径的(一个Cookie只有在一个网页目录下有效)缺省path属性时,WEB服务器页会自动传递当前路径给浏览器指定路径会强制服务器使用设置的路径一个目录页面里设的cookie在另一个目录的页面里是看不到的,第7章PHP与动态网页环境的交互72-,43,接收和处理cookie,PHP对cookie的处理是全自动的,与处理FORM变量的原则一样cookie当然也可以使用PHP全局变量,$HTTP_COOKIE_VARS数组,例:echo$_COOKIETestCookie;echo$HTTP_COOKIE_VARSTestCookie;/Anotherwaytodebug/testistoviewallcookiesprint_r($_COOKIE);输出:Array(DBGSESSID=),第7章PHP与动态网页环境的交互72-,44,删除cookie,调用只带有name参数的setcookie();使失效时间为time()或time-1;例如:/settheexpirationdatetoonehouragosetcookie(TestCookie,time()-3600);setcookie(TestCookie,time()-3600,/rasmus/,1);,第7章PHP与动态网页环境的交互72-,45,使用cookie的限制,必须在HTML文件的内容输出之前设置;不同的浏览器对cookie的处理不一致,使用时一定要考虑;客户端的限制,比如用户设置禁止cookie,则cookie不能建立;,第7章PHP与动态网页环境的交互72-,46,一个使用cookie的实例,第7章PHP与动态网页环境的交互72-,47,一个使用cookie的实例(图例),第7章PHP与动态网页环境的交互72-,48,Cookie方法存在的不足之处,首先,Cookie是需要依赖浏览器才能工作,如果浏览器不支持Cookie功能,或一些用户出于自身原因关闭了浏览器的Cookie功能,那么需要Cookie才能实现的某些Web应用就无法完成Cookie另一个的重要缺点是因为Web服务信息被存在客户端,而这些信息的“消费者”却在Web服务器端,无论服务信息的建立、维持、更新和使用都涉及到通信处理,这样就加重了网络的负荷并降低了Web服务的效率,第7章PHP与动态网页环境的交互72-,49,Session的由来,Session的第一次使用是在Microsoft的ASP中。后来,其它的程序语言如JSP,PHP等,才逐渐开始使用。随着电子商务网站和各种个性化的网站的蓬勃发展,Session在Web的开发中的分量显得越来越重,第7章PHP与动态网页环境的交互72-,50,Session的基本思想(一),Session的主要设想是在Web服务器上保存与用户交互的WeB应用数据在session开始时(也就是开始需要保存Web的交互数据时),由Web服务器中的中间件进程(例如ASP或PHP)来产生一个标识发给浏览器,以后浏览器每次向服务器请求新的文档时,会发送该标识来表明自己的身份,并索取存在服务器上的session数据,第7章PHP与动态网页环境的交互72-,51,Session的基本思想(二),这个标识称为SessionID,通常要用一些特定的办法保证它的唯一性服务器根据这个SessionID区分不同的客户的不同访问,并用某种办法维护相关的必要数据,比如以它为关键值,在文件系统或数据库中保存着数据SessionID是主键,其他字段用来保存数据,第7章PHP与动态网页环境的交互72-,52,Session的基本思想(三),而有了Session就好办了,Session中注册的变量可以作为全局变量使用,也就是说在某个网站内的所有的程序都能使用Session可以用来实现以下功能:用户身份认证(最常见的用途),程序状态的记录,网页之间的参数传递等等,第7章PHP与动态网页环境的交互72-,53,Session的基本思想(四),服务器与客户端用这个SessionID来保持彼此间的联系,而不必把所有需要维护的数据传来传去。例如,服务器在收到某个访问的时候,会在系统中检查SessionID是否已经存在如果不存在,就创建一个新的SessionID,并根据这个标识建立一些新的数据如果已经存在,只需把与它相关的数据提取出来,第7章PHP与动态网页环境的交互72-,54,Session的基本思想(五),现在有个问题是如何在客户端保存seesionID,以便在新的网页请求中使用?现在常用的办法由三个:一是使用Cookie在客户端缓存;二是依附HTTP请求报文的URL字段;三是通过表单中的hidden类型的input元素来传递大部分的程序语言在实现Session时采用Cookie保存SessionID,PHP则同时支持这些方法Cookie的方法是把SessionID作为一个Cookie数据项,第7章PHP与动态网页环境的交互72-,55,Session的基本思想(六),这样,Session的实现就与Cookie又息息相关了,一方面可以得到Cookie带来的好处,比如Cookie对客户是透明的;另一方面也会因为客户关闭了Cookie的接受功能,Session就无法使用了URL方法一般在无法使用Cookie情况下采用,它在每个用户请求的URL后面加上SessionID作为参数使用表单可以利用Hidden类型的元素来进行SessionID的传递,第7章PHP与动态网页环境的交互72-,56,PHP的Session函数(一),PHP把Session的数据保存在Web服务器上,然后通过SessionID来识别不同的客户端(进程)PHP保存数据的方法有几种,可以用文本文件、共享内存或者数据库,这几种方法的区别在于数据存取的方便性和效率高低PHP的Session函数可以把任意多个的变量注册为Session变量,并在Web交互中使用,第7章PHP与动态网页环境的交互72-,57,PHP的Session函数(二),PHP中的session默认情况下是使用客户端的Cookie来保存sessionIDPHP中的session是否只能使用sessioncookie呢?当然不是,否则何必还弄个session出来,不如直接用Cookie算了Session的一大优点就是当客户端的Cookie被禁用时会自动把sessionid附在URL中,这样再通过sessionid就能记住session变量了,第7章PHP与动态网页环境的交互72-,58,PHP的Session函数实验,下面用两个文件来证实一下,首先在浏览器中设置禁用Cookie.,第7章PHP与动态网页环境的交互72-,59,PHP的Session函数实验程序一,gototest2.php;?,第7章PHP与动态网页环境的交互72-,60,PHP的Session函数实验程序二,gototest1.php;elseechoFailed.;?,第7章PHP与动态网页环境的交互72-,61,Session的基本工作原理,第7章PHP与动态网页环境的交互72-,62,PHP的Session函数-session_start,session_start-初始化session数据说明boolsession_start(void)session_start()建立session(基于通过GET变量或cookie发送的sessionID恢复当前的session),第7章PHP与动态网页环境的交互72-,63,PHP的Session函数-session_register,session_register-在当前session中注册一或多个变量说明boolsession_register(mixedname,mixed.)session_register()接受多个变量参数,这些参数可以是字符串或命名数组对于每个变量名,session_register()将其注册为当前session中的全局变量,第7章PHP与动态网页环境的交互72-,64,session_register,session_register()acceptsavariablenumberofarguments,anyofwhichcanbeeitherastringholdingthenameofavariableoranarrayconsistingofvariablenamesorotherarrays.Foreachname,session_register()registerstheglobalvariablewiththatnameinthecurrentsession,第7章PHP与动态网页环境的交互72-,65,session_is_registeredsession_is_registered-FindoutifavariableisregisteredinasessionDescriptionboolsession_is_registered(stringname)session_is_registered()returnsTRUEifthereisavariablewiththenamenameregisteredinthecurrentsession.,Session的基本工作原理,第7章PHP与动态网页环境的交互72-,66,Session的基本工作原理,第7章PHP与动态网页环境的交互72-,67,第7章PHP与动态网页环境的交互72-,68,Session的基本工作原理,第7章PHP与动态网页环境的交互72-,69,session的生命周期是多长,浏览器关闭时其生命周期也同时结束,但是档案仍然存在于/sessiondata/sess_#文件下次重新开浏览器时会重新分配sessionID,如果须使用session_id()把以前的ID带回来,则会去读取残存在/sessiondata/sess_#文件,取回上次所有已经设定的参数可以在php.ini里修改session档案残存的时间,第7章PHP与动态网页环境的交互72-,70,session的生命周期是多长,session.gc_maxlifetime=1440;afterthisnumberofseconds,stored;datawillbeseenasgarbageand;cleanedupbythegcprocess默认是1440秒,24分钟,第7章PHP与动态网页环境的交互72-,71,使用session注意的存储路径问题,看看php.ini里对于session的设置Sessionsession.save_handler=files;handlerusedtostore/retrievedatasession.save_path=/tmp;argumentpassedtosave_handler;inthecaseoffiles,thisisthe;pathwheredatafilesarestored默认是存于/tmp目录下,这个目录可不一定真有啊!最好改为你的php安装路径,比如c:/php,第7章PHP与动态网页环境的交互72-,72,本章小结,联机编辑服务器上的文档HTTP认证网页重定向保存Web交互信息的技术Cookie与Session的应用,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!