HP入门第8章PHP与Web页交互.ppt

上传人:wuy****n92 文档编号:70275242 上传时间:2023-01-18 格式:PPT 页数:27 大小:216KB
返回 下载 相关 举报
HP入门第8章PHP与Web页交互.ppt_第1页
第1页 / 共27页
HP入门第8章PHP与Web页交互.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《HP入门第8章PHP与Web页交互.ppt》由会员分享,可在线阅读,更多相关《HP入门第8章PHP与Web页交互.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、变量变量 这里的变量不是PHP脚本中的普通变量,而是PHP脚本中获取服务器环境信息,请求信息(包括表单参数和cookie)的方法。通常把这些信息统称为EGPCS(environment、GET、POST、cookies、server)。这里主要讲解了如何获取这些变量的值,以及在php.ini文件中有关这些变量的设置。如果php.ini文件中的register_globals选项被启用,PHP就会为第一个表单参数、请求信息服务器环境创建一个独立的全局变量。这个功能非常方便,它可以让浏览器为程序初始化任何变量。但这个功能也非常危险。这一点将在后面的章节中介绍。如果忽略register_global

2、s的设置,PHP将创建6个包含EGPCS信息的全局数组,通过它们获取EGPCS传递的数据。变量变量$_COOKIE:获取COOKIE中传递的所有cookie值,数组的键名是cookie名称。$_POST:获取POST请求传递的参数,数组的键名是表单参数的名称。$_GET:获取GET请求传递的参数值,数组的键名是表单参数的名称$_FILES:获取上传文件的所有信息。$_SERVER:获取服务器的相关信息.$_ENV:获取环境变量的值,键名是环境变量的名称。以上这些变量不但是全局的,而且在函数的定义中也是可见的。$_REQUEST数组也由PHP自动生成,包含了$_GET,$_POST,$_COOK

3、IE三个数组的所有元素。PHP还会创建一个$_SERVERPHP_SELF的变量,用于存放当前脚本的路径和名称(相对于文档根目录,例如/08/stat.php)。表单处理表单处理表单处理包括:表单处理包括:方法(方法(Method)对参数进行自动引号处理对参数进行自动引号处理 自处理页面自处理页面 粘性表单粘性表单多值参数多值参数粘性多值参数粘性多值参数文件上传文件上传表单验证表单验证表单处理表单处理u 方法方法 客户端可以用两种客户端可以用两种HTTPHTTP方法向服务器传送表单数据:方法向服务器传送表单数据:GETGET和和POSTPOST 。采用哪种方法是由表单标签(采用哪种方法是由表单

4、标签()中的)中的methodmethod属性所指定的。属性所指定的。注意:注意:理论上说在理论上说在HTMLHTML中中methodmethod是不区分大小写的,但是实际上有些浏是不区分大小写的,但是实际上有些浏览器要求览器要求methodmethod为大写。为大写。GET方法:一个GETGET请求把表单的参数编码成URL形式,称为查询字符串(query string):/path/to/index.php?subject=despicable&length=3 POST方法:一个POST提求则通过HTTP请求的主体来传递表单参数,不需要考虑URL。表单处理表单处理 GETGET方法方法与与

5、POSTPOST方法的方法的区区别 GET和POST方法的最明显区别是URL行。因为GET请求的所有表单参数都编码在URL中,用户可以把一个GET请求加入浏览器收藏夹,而对POST请求却无法这样做。HTTP规范指明GET请求是幂等的(idempotent)。即对于一个特定URL的GET请求(包含表单参数),与对应于这一特定URL的两个或多个GET请求是一样的。因此,Web浏览器可以把GET请求得到的响应页面缓存起来。这是因为不管页面被请求了多少次,响应页面都是不变的。正因为幂等性,GET请求中用于那些响应页面永不改变的性况,例如将一个单词分解成小块,或者对数字进行乘法运算。表单处理表单处理GE

6、TGET方法方法与与POSTPOST方法的方法的区区别 POST请求不具幂等性。这意味着它们无法被缓存,在每次刷新页面时,都会重新连接服务器。显示或者刷新页面时,你可能会看到浏览器提示“Repost form data?(重新发送表单数据)”。所以POST适用于响应内容可能会随时间改变的情况,例如:显示购物车的内容,或者在一个论坛中显示当前主题。现实中,幂等性常常被忽略。目前浏览器的缓存功能都很差,并且“刷新”按钮很容易被用户点到,所以程序员通常只考虑是否想将参数显示在浏览器的URL地址栏上,如果不想显示,就用POST方法。但你要记住,在服务器的响应页面可能会变化的情况下(例如下订单或者更新数

7、据库),不要使用GET方法。表单处理表单处理u 对参数进行自动引号处理对参数进行自动引号处理 如果如果php.iniphp.ini中的中的magic_quotes_gpcmagic_quotes_gpc选项启用,那么选项启用,那么PHPPHP将在所有将在所有cookiecookie数据以及数据以及GETGET和和POSTPOST参数上自动调用参数上自动调用addslashesaddslashes()()函数。这使函数。这使得在数据库查询中使用表单参数变得简单,但同时也对那些没有在数据得在数据库查询中使用表单参数变得简单,但同时也对那些没有在数据库查询中使用的表单参数造成了麻烦,因为这需要在单引

8、号、双引号、库查询中使用的表单参数造成了麻烦,因为这需要在单引号、双引号、反斜杆和空字节等前面添加上反斜杆以进行转义。反斜杆和空字节等前面添加上反斜杆以进行转义。例如,在文本框中输入例如,在文本框中输入“PHPMRSOFT”PHPMRSOFT”,并单击提交按钮,你就会,并单击提交按钮,你就会发现被分块的字符串其实是发现被分块的字符串其实是“PHPMRSOFT”PHPMRSOFT”。这就是。这就是magic_quotes_gpcmagic_quotes_gpc的作用。的作用。表单处理表单处理 为了处理用户输入的字符串,可以禁用php.ini中的magic_quotes_gpc选项或者对$_GET

9、、$_POST、和$_COOKIES使用stripslashes()函数进行转义还原。其方法如下:$value=ini_get(magic_quotes_gpc)?stripslashes($_GETword):$_GETword;如果需要处理大量字符串,还可以封装一个自定义函数:function raw_param($name)return ini_get(magic_quotes_gpc)?stripslashes($_GET$name):$_GET$name;表单处理表单处理u 自处理页面自处理页面 所谓自处理页面,就是一个PHP页面能同时用来生成表单和处理表单。实现此功能有两种方法:第

10、一种方法,应用$_SERVERREQUEST_METHOD获取表单中method的值,如果它的值为GET,则生成表单;如果它的值为POST则处理表单。第二种方法,通过isset()函数判断指定的参数是否被创建,如果存在则执行处理表单的操作,否则执行生成表单的操作。表单处理表单处理u 粘性表单粘性表单 很多网站使用一种称为“粘性表单”(sticky form)的技术。用这种技术,设置一个查询表单的默认值为先前查询的值。例如:如果在百度(http:/)上查询“明日科技”,则在结果页面的顶端的另一个查询文本框中,包含先前的查询关键字“明日科技”。如果将查询的关键字改为“明日科技 编程词典”,那么只要

11、简单地在后面补充即可。这就是粘性表单。表单处理表单处理u 多值参数多值参数 用HTML中的select标签创建选择列表,允许用户进行多重选择。为了确保PHP识别浏览器传递来的多个值,需要在HTML表单的字段名后加上“”,例如:CC+PHPPer1 现在,当用户提交表单时,$_POSTlanguages包含一个数组而不是一个字符串。这个数组包含用户所选择的值。表单处理表单处理u 粘性多值参数粘性多值参数 实现多值参数的表单具有粘性的方法:封装一个自定义函数,改编复选框创建的方式,以此来达到表单的粘性功能。自定义函数make_checkbox的语法如下:function make_checkbox

12、($name,$checked,$option)foreach($option as$value=$label)printf(%s  n;表单处理表单处理 自定义函数make_checkbox创建具有相同名称的复选框,其中参数name指定复选框组的名称;参数checked设置复选框默认值;参数option定义复选框的名称和值。表单处理表单处理u 文件上传文件上传 文件上传,通过表单中的文件域提交上传文件,通过$_FILES数组处理文件,通过is_uploaded_file()函数验证上传文件,通过move_uploaded_file()函数完成文件上传。在PHP中上传文件最

13、大的问题是对超大文件的处理。PHP有两种方法避免出现这种情况:一个硬性限制和一个软性限制。(1)在php.ini中文件中,可以对上传文件进行硬性限制。包括:是否支持上传、上传文件的临时目录、上传文件的大小、指令执行的时间、指令分配的内存空间。(2)在表单中,在文件域之前添加一个名称为MAX_FILE_SIZE的隐藏域,通过它的值可以实现上传文件大小的软限制。表单处理表单处理$_FILES全局数组为一个多维数组,用于获取通过POST方法上传文件时的相关信息。如果是单文件上传,那麽数组为二维数组,如果是多文件上传,那麽数组为三维数组。$_FILES数组中每个元素的含义,如下所示。数组中每个元素的含

14、义,如下所示。$_FILESfilenamename:浏览器提供的文件名。使用价值不大,因为客户端机器上的文件名约定有可能和Web服务器不同(例如:如果客户机为Windows系统,文件名可能为“C:PHOTOSME.JPG”,而服务器为Unix系统,那么这个文件路径没什么意义)$_FILESfilenamesize:已上传文件的大小。单位为字节。如果用户试图上传一个过大的文件,它的大小将被置为0$_FILESfilenametmp_name:文件上传到服务器后,在服务器中的临时文件名$_FILESfilenametype:从客户端上传的文件类型。例如:“image/gif”,主类型为“图像”,

15、子类型为GIF格式的文件,“text/html”代表文本的HTML文件 表单处理表单处理$_FILESfilenameerror:返回在上传过程中发生错误的错误代号。错误代号有5种,如下所示:0:表示没有任何错误,文件上传成功1:表示上传文件的大小超出了PHP配置文件指令upload_max_filesize选项限制的值2:表示上传文件大小超出了HTML表单中MAX_FILE_SIZE选项所指定的值3:表示文件只被上传了一部分4:表示没有上载任何文件 PHP中应用is_uploaded_file()函数判断指定的文件是否是通过HTTP POST上传的,如果是则返回TRUE,则可以继续执行文件的

16、上传操作,否则将不能够继续执行。语法:bool is_uploaded_file(string filename)说明:参数filename必须指定类似于$_FILESfilenametmp_name的变量,不可以使用从客户端上传的文件名$_FILESfilenamename表单处理表单处理 通过is_uploaded_file()函数对上传文件进行判断,可以确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如/etc/passwd。PHP中应用move_uploaded_file()函数将文件上传到服务器中指定的位置。如果成功返回TRUE,否则返回FALSE。语法:bool move_up

17、loaded_file(string filename,string destination)说明:参数filename指定上传文件的临时文件名,即$_FILEStmp_name;参数destination指文件上传后保存的新路径和名称。说明:如果参数filename不是合法的上传文件,不会执行任何操作,move_uploaded_file()将返回FALSE。如果参数filename是合法的上传文件,但出于某些原因无法移动,同样也不会执行任何操作,move_uploaded_file()将返回FALSE。此外还会发出一条警告。表单处理表单处理u 表单验证表单验证 在使用和存储表单提交的数据时

18、,通常需要对这些数据进行验证,其验证的方法很多。首先是在客户端使用JavaScript。但是用户可以禁用JavaScript,甚至使用一个不支持JavaScript的浏览器,所以用这个方法还不够。更为稳妥的方式是通过PHP来完成验证。验证表单元素是否为空,首先通过isset()函数检测变量是否设置;然后通过empty()检测变量是否为空。通过PHP对具体的表单元素值进行验证,如果是单纯的数字、英文字符串、字符串大小写的区分等等,PHP中有相应的函数可以独立完成。但是,如果是对电话号码、Email或者IP地址等进行验证时,必须借助正则表达式的帮助。设置响应头内容设置响应头内容设置响应头内容有哪些

19、:设置响应头内容有哪些:不同的内容类型不同的内容类型重定向重定向设置过期时间设置过期时间HTTP认证认证文件下载文件下载设置响应头设置响应头使用header()函数来设置头部语法:void header(string string,bool replace,int http_response_code)参数说明:String:必要参数。输入的头部信息 replace:可选参数。指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为false则可以强制发送多个同类标头http_response_code:可选参数。强制将HTTP响应代码设为指定值,此参数是以后添加的。

20、注意:设置header一定要在生成主体内容之前完成,这意味着所有header()(或setcookie(),如果你想设置cookie)要在文件的最前面,甚至在标签之前不同的内容类型不同的内容类型 Content-Type头指定被返回文档的类型。它通常是“text/html”,指明它是一个HTML文档,但还有其他一些有用的文档类型。例如“text/plain”让浏览器强制性地将内容当作纯文本来处理。这个类型就类似于自动的“查看源代码”,它在调试时很有用。重定向重定向 通过header()函数可以向浏览器发送一个新的URL,并让浏览器转向到这个地址。这样的重定向(redirection)操作,只需

21、要通过设置Location头即可。例如,通过header()函数重定向到http:/,其代码如下:header(Location:http:/);重定向操作更倾向于绝对路径,如果提供相对的URL(如“/index.php”),重定向会在服务器内部进行。这种方法很少用,因为浏览器并不知道它得到的页面是否是所请求的。如果在新的文档中存在相对URL,浏览器会将它们解释成相对于所请求的文档,而不是被发送的文档。设置过期时间设置过期时间 服务器可以显式地通知浏览器文档的过期时间。代理服务器和浏览器缓存在过期之前可保持文件,或提前结束它。重新载入一个被缓存的页面不需要和服务器进行通讯。但是尝试获取一个已经

22、过期的文档就需要与服务器取得联系。为一个文档设置过期时间,应用的是Expires头:header(Expires:Mon,08 Jul 2011 08:08:08 GMT);例如:控制文档在页面生成后的2小时后过期。使用time()和gmstrftime()函数生成过期日期字符串:HTTP认证认证 HTTP认证(HTTP authentication)通过请求的header和响应状态来工作。浏览器可以将用户名和密码放在请求的头里发送。如果认证凭证(credential,即指用户名和密码)未发送或者不匹配,服务器将发送一个“401 Unauthorized”响应并通过WWW认证头来确定当前认证的

23、区域(realm)(一个字符串,诸如“Marys Pictures”或“Your Shopping Cart”)。这通常会导致浏览器弹出一个“Enter username and password for”对话框,且该页面会重新请求更新头中的认证凭证 为了用PHP来处理认证,可检查用户名和密码($_SERVER数组中的PHP_AUTE_USER和PHP_AUTH_PW两个元素)并调用header()函数来设置区域,然后发送一个“401 Unauthorized”响应。其关键代码如下:header(WWW-Authenticate:Basic realm=Top Secret Files);he

24、ader(HTTP/1.0 401 Unauthorized);HTTP认证认证 header()函数还可以强制客户端每次访问页面时获取最新资料,而不是使用存在于客户端的缓存。其关键代码如下:header(Expires:Mon,08 Jul 2011 08:08:08 GMT);header(Last-Modified:.gmdate(D,d M Y H:i:s).GMT);header(Cache-Control:no-store,no-cache,must-revalidate);header(Cache-Control:post-check=0,pre-check=0,false);header(Pragma:no-cache);文件下载文件下载 根据服务器返回的头信息,应用header函数可以完成文件的下载操作。其关键代码如下:header(Content-type:application/octet-stream);header(Accept-ranges:bytes);header(Accept-length:.filesize($path);header(ContentDisposition:attachment;filename=.$filename);例如:通过header()函数生成Excel格式的下载文件,其关键代码如下:Thank you

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁