




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、变量变量 这里的变量不是PHP脚本中的普通变量,而是PHP脚本中获取效力器环境信息,恳求信息包括表单参数和cookie的方法。通常把这些信息统称为EGPCSenvironment、GET、POST、cookies、server。 这里主要讲解了如何获取这些变量的值,以及在php.ini文件中有关这些变量的设置。 假设php.ini文件中的register_globals选项被启用,PHP就会为第一个表单参数、恳求信息效力器环境创建一个独立的全局变量。这个功能非常方便,它可以让阅读器为程序初始化任何变量。但这个功能也非常危险。这一点将在后面的章节中引见。 假设忽略register_globals
2、的设置,PHP将创建6个包含EGPCS信息的全局数组,经过它们获取EGPCS传送的数据。 变量变量$_COOKIE:获取COOKIE中传送的一切cookie值,数组的键名是cookie称号。$_POST:获取POST恳求传送的参数,数组的键名是表单参数的称号。 $_GET:获取GET恳求传送的参数值,数组的键名是表单参数的称号$_FILES:获取上传文件的一切信息。$_SERVER:获取效力器的相关信息.$_ENV:获取环境变量的值,键名是环境变量的称号。 以上这些变量不但是全局的,而且在函数的定义中也是可见的。$_REQUEST数组也由PHP自动生成,包含了$_GET,$_POST,$_CO
3、OKIE三个数组的一切元素。 PHP还会创建一个$_SERVERPHP_SELF的变量,用于存放当前脚本的途径和名称相对于文档根目录,例如/08/stat.php。 表单处置表单处置表单处置包括:表单处置包括:方法方法Method 对参数进展自动引号处置对参数进展自动引号处置 自处置页面自处置页面 粘性表单粘性表单多值参数多值参数粘性多值参数粘性多值参数文件上传文件上传表单验证表单验证表单处置表单处置u 方法u 客户端可以用两种HTTP方法向效力器传送表单数据:GET和POST 。u 采用哪种方法是由表单标签中的method属性所指定的。 u 留意:实际上说在HTML中method是不区分大小
4、写的,但是实践上有些阅读器要求method为大写。u GET方法:u 一个GET恳求把表单的参数编码成URL方式,称为查询字符串query string:/path/to/index.php?subject=despicable&length=3 u POST方法:一个POST提求那么经过HTTP恳求的主体来传送表单参数,不需求思索URL。 表单处置表单处置 GETGET方法方法与与POSTPOST方法的方法的区别区别 GET GET和和POSTPOST方法的最明方法的最明显区别显区别是是URLURL行。由于行。由于GETGET恳恳求的求的一切表一切表单参数单参数都都编码编码在在URLURL中
5、,用中,用户户可以把一可以把一个个GETGET恳恳求求参与阅参与阅读读器收藏器收藏夹夹,而,而对对POSTPOST恳恳求却无法求却无法这样这样做。做。 HTTP HTTP规规范指明范指明GETGET恳恳求是求是幂幂等的等的idempotentidempotent。即。即对对于一于一个个特定特定URLURL的的GETGET恳恳求包含表求包含表单参数单参数,与对应与对应于于这这一特一特定定URLURL的的两个两个或多或多个个GETGET恳恳求是一求是一样样的。因此,的。因此,WebWeb阅读阅读器可以器可以把把GETGET恳恳求得到的呼求得到的呼应页应页面面缓缓存起存起来来。这这是由于不是由于不论
6、页论页面被面被恳恳求求了多少次,呼了多少次,呼应页应页面都是不面都是不变变的。正由于的。正由于幂幂等性,等性,GETGET恳恳求中用求中用于那些呼于那些呼应页应页面永不改面永不改动动的性的性况况,例如,例如将将一一个单词个单词分解成小分解成小块块,或者或者对数对数字字进进展乘法展乘法运运算。算。 表单处置表单处置GETGET方法方法与与POSTPOST方法的方法的区别区别 POST POST恳恳求不具求不具幂幂等性。等性。这这意味着意味着它们它们无法被无法被缓缓存,在每次存,在每次刷新刷新页页面面时时,都,都会会重新重新衔衔接效力器。接效力器。显显示或者刷新示或者刷新页页面面时时,他,他能能够
7、会够会看到看到阅读阅读器提示器提示“Repost form data?(“Repost form data?(重新重新发发送表送表单数单数据据) )。所以。所以POSTPOST适用于呼适用于呼应内应内容能容能够会随时间够会随时间改改动动的情的情况况,例如:,例如:显显示示购购物物车车的的内内容,或者在一容,或者在一个论坛个论坛中中显显示示当当前主前主题题。 现实现实中,中,幂幂等性等性经经常被忽略。目前常被忽略。目前阅读阅读器的器的缓缓存功能都很存功能都很差,差,并并且且“ “刷新刷新按按钮钮很容易被用很容易被用户户点到,所以程序点到,所以程序员员通常只思通常只思索能否想索能否想将参数显将参数
8、显示在示在阅读阅读器的器的URLURL地址地址栏栏上,假上,假设设不想不想显显示,示,就用就用POSTPOST方法。但他要方法。但他要记记住,在效力器的呼住,在效力器的呼应页应页面能面能够会变够会变化化的情的情况况下例如下下例如下订单订单或者更新或者更新数数据据库库,不要,不要运运用用GETGET方法。方法。 表单处置表单处置u 对参数进展自动引号处置对参数进展自动引号处置u 假设假设php.ini中的中的magic_quotes_gpc选项启用,选项启用,那么那么PHP将在一切将在一切cookie数据以及数据以及GET和和POST参数参数上自动调用上自动调用addslashes()函数。这使
9、得在数据库查询函数。这使得在数据库查询中运用表单参数变得简单,但同时也对那些没有在数中运用表单参数变得简单,但同时也对那些没有在数据库查询中运用的表单参数呵斥了费事,由于这需求据库查询中运用的表单参数呵斥了费事,由于这需求在单引号、双引号、反斜杆和空字节等前面添加上反在单引号、双引号、反斜杆和空字节等前面添加上反斜杆以进展本义。斜杆以进展本义。u 例如,在文本框中输入例如,在文本框中输入“PHPMRSOFT,并,并单击提交按钮,他就会发现被分块的字符串其实是单击提交按钮,他就会发现被分块的字符串其实是“PHPMRSOFT。这就是。这就是magic_quotes_gpc的的作用。作用。表单处置表
10、单处置 为了处置用户输入的字符串,可以禁用php.ini中的magic_quotes_gpc选项或者对$_GET、$_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;表单处置表单
11、处置u 自处置页面自处置页面u 所谓自处置页面,就是一个所谓自处置页面,就是一个PHP页面页面能同时用来生成表单能同时用来生成表单u和处置表单。实现此功能有两种方法:和处置表单。实现此功能有两种方法:u第一种方法,运用第一种方法,运用$_SERVERREQUEST_METHOD获取表单中获取表单中umethod的值,假设它的值为的值,假设它的值为GET,那么,那么生成表单;假设它的值为生成表单;假设它的值为POSTu那么处置表单。那么处置表单。u第二种方法,经过第二种方法,经过isset()函数判别指定的函数判别指定的参数能否被创建,假设存参数能否被创建,假设存u在那么执行处置表单的操作,否那
12、么执行生在那么执行处置表单的操作,否那么执行生成表单的操作。成表单的操作。u 表单处置表单处置u 粘性表单粘性表单u 很多网站运用一种称为很多网站运用一种称为“粘性表单粘性表单sticky form的技术。的技术。u用这种技术,设置一个查询表单的默许值为用这种技术,设置一个查询表单的默许值为先前查询的值。例如先前查询的值。例如u:假设在百度:假设在百度()上查询上查询“明日科技,那明日科技,那么么u在结果页面的顶端的另一个查询文本框中,在结果页面的顶端的另一个查询文本框中,包含先前的查询关键包含先前的查询关键u字字“明日科技。假设将查询的关键字改为明日科技。假设将查询的关键字改为“明日科技明日
13、科技 编程词典,编程词典,u那么只需简单地在后面补充即可。这就是粘那么只需简单地在后面补充即可。这就是粘性表单。性表单。表单处置表单处置u 多值参数多值参数u 用用HTML中的中的select标签创建选择列标签创建选择列表,允许用户进展多重选择。为表,允许用户进展多重选择。为u了确保了确保PHP识别阅读器传送来的多个值,识别阅读器传送来的多个值,需求在需求在HTML表单的字段名后表单的字段名后u加上加上“,例如:,例如:uuCuC+uPHPuPer1uu 如今,当用户提交表单时,如今,当用户提交表单时,$_POSTlanguages包含一个数包含一个数组而组而u不是一个字符串。这个数组包含用户
14、所选择不是一个字符串。这个数组包含用户所选择的值。的值。表单处置表单处置u 粘性多值参数粘性多值参数u 实现多值参数的表单具有粘性的方法实现多值参数的表单具有粘性的方法:u 封装一个自定义函数,改编复选框创建的封装一个自定义函数,改编复选框创建的方式,以此来到达表单的粘方式,以此来到达表单的粘u性功能。自定义函数性功能。自定义函数make_checkbox的的语法如下:语法如下:ufunction make_checkbox($name, $checked, $option)uforeach($option as $value = $label)uprintf(%s n
15、;uuu 表单处置表单处置 自定义函数make_checkbox创建具有一样称号的复选框,其中参数name指定复选框组的称号;参数checked设置复选框默许值;参数option定义复选框的称号和值。 表单处置表单处置u 文件上传文件上传u 文件上传,经过表单中的文件域提交上文件上传,经过表单中的文件域提交上传文件,经过传文件,经过$_FILES数组数组u处置文件,经过处置文件,经过is_uploaded_file()函函数验证上传文件,经过数验证上传文件,经过umove_uploaded_file()函数完成文件函数完成文件上传。上传。u 在在PHP中上传文件最大的问题是对超大中上传文件最大
16、的问题是对超大文件的处置。文件的处置。PHP有两种方法有两种方法u防止出现这种情况:一个硬性限制和一个软防止出现这种情况:一个硬性限制和一个软性限制。性限制。u 1在在php.ini中文件中,可以对上传文中文件中,可以对上传文件进展硬性限制。包括:能否件进展硬性限制。包括:能否u支持上传、上传文件的暂时目录、上传文件支持上传、上传文件的暂时目录、上传文件的大小、指令执行的时间、的大小、指令执行的时间、u指令分配的内存空间。指令分配的内存空间。u 2在表单中,在文件域之前添加一个在表单中,在文件域之前添加一个称号为称号为MAX_FILE_SIZE的隐的隐u藏域,经过它的值可以实现上传文件大小的藏
17、域,经过它的值可以实现上传文件大小的软限制。软限制。u 表单处置表单处置 $_FILES全局数组为一个多维数组,用于获取经过POST方法上传文件时的相关信息。假设是单文件上传,那麽数组为二维数组,假设是多文件上传,那麽数组为三维数组。 $_FILES数组中每个元素的含义,如下所示。$_FILESfilenamename:阅读器提供的文件名。运用价值不大,由于客户端机器上的文件名商定有能够和Web效力器不同例如:假设客户机为Windows系统,文件名能够为“C:PHOTOSME.JPG,而效力器为Unix系统,那么这个文件途径没什么意义$_FILESfilenamesize:已上传文件的大小。单
18、位为字节。如果用户试图上传一个过大的文件,它的大小将被置为0 $_FILESfilenametmp_name:文件上传到效力器后,在效力器中的临时文件名 $_FILESfilenametype:从客户端上传的文件类型。例如:“image/gif,主类型为“图像,子类型为GIF格式的文件,“text/html代表文本的HTML文件 表单处置表单处置$_FILESfilenameerror:前往在上传过程中发生错误的错误代号。错误代号有5种,如下所示:0:表示没有任何错误,文件上传胜利1:表示上传文件的大小超出了PHP配置文件指令upload_max_filesize选项限制的值2:表示上传文件大
19、小超出了HTML表单中MAX_FILE_SIZE选项所指定的值3:表示文件只被上传了一部分4:表示没有上载任何文件 PHP中运用is_uploaded_file()函数判别指定的文件能否是经过 POST上传的,假设是那么前往TRUE,那么可以继续执行文件的上传操作,否那么将不可以继续执行。语法:bool is_uploaded_file ( string filename )阐明:参数filename必需指定类似于$_FILESfilenametmp_name的变量,不可以运用从客户端上传的文件名$_FILESfilenamename表单处置表单处置 经过is_uploaded_file()函
20、数对上传文件进展判别,可以确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如/etc/passwd。 PHP中运用move_uploaded_file()函数将文件上传到效力器中指定的位置。假设胜利前往TRUE,否那么前往FALSE。语法:bool move_uploaded_file ( string filename, string destination )阐明:参数filename指定上传文件的暂时文件名,即$_FILEStmp_name;参数destination指文件上传后保管的新途径和称号。 阐明:假设参数filename不是合法的上传文件,不会执行任何操作,move_upl
21、oaded_file()将前往FALSE。假设参数filename是合法的上传文件,但出于某些缘由无法挪动,同样也不会执行任何操作,move_uploaded_file()将前往FALSE。此外还会发出一条警告。 表单处置表单处置u 表单验证表单验证u 在运用和存储表单提交的数据时,通常在运用和存储表单提交的数据时,通常需求对这些数据进展验证,其需求对这些数据进展验证,其u验证的方法很多。首先是在客户端运用验证的方法很多。首先是在客户端运用JavaScript。但是用户可以禁用。但是用户可以禁用uJavaScript,甚至运用一个不支持,甚至运用一个不支持JavaScript的阅读器,所以用这
22、个方的阅读器,所以用这个方u法还不够。更为稳妥的方式是经过法还不够。更为稳妥的方式是经过PHP来来完成验证。验证表单元素能否完成验证。验证表单元素能否u为空,首先经过为空,首先经过isset()函数检测变量能否函数检测变量能否设置;然后经过设置;然后经过empty()检测检测u变量能否为空。变量能否为空。 u 经过经过PHP对详细的表单元素值进展验证对详细的表单元素值进展验证,假设是单纯的数字、英文字,假设是单纯的数字、英文字u符串、字符串大小写的区分等等,符串、字符串大小写的区分等等,PHP中中有相应的函数可以独立完成。有相应的函数可以独立完成。u但是,假设是对号码、但是,假设是对号码、Em
23、ail或者或者IP地址地址等进展验证时,必需借助等进展验证时,必需借助u正那么表达式的协助。正那么表达式的协助。设置呼应头内容设置呼应头内容设置呼应头内容有哪些:设置呼应头内容有哪些:不同的内容类型不同的内容类型重定向重定向设置过期时间设置过期时间HTTP认证认证文件下载文件下载设置呼应头设置呼应头运用header()函数来设置头部语法:void header ( string string , bool replace , int http_response_code )参数阐明:String:必要参数。输入的头部信息 replace :可选参数。指明是交换掉前一条类似的标头还是添加一条一样
24、类型的标头。默以为交换,但假设将其设为false那么可以强迫发送多个同类标头http_response_code :可选参数。强迫将HTTP呼应代码设为指定值,此参数是php5.3.0以后添加的。留意:设置header一定要在生成主体内容之前完成,这意味着一切header()或setcookie(),假设他想设置cookie要在文件的最前面,甚至在标签之前不同的内容类型不同的内容类型 Content-Type头指定被前往文档的类型。它通常是“text/html,指明它是一个HTML文档,但还有其他一些有用的文档类型。例如“text/plain让阅读器强迫性地将内容当作纯文本来处置。这个类型就类
25、似于自动的“查看源代码,它在调试时很有用。重定向重定向 经过header()函数可以向阅读器发送一个新的URL,并让阅读器转向到这个地址。这样的重定向redirection操作,只需求经过设置Location头即可。例如,经过header()函数重定向到mrbccd,其代码如下: header(Location: mrbccd); 重定向操作更倾向于绝对途径,假设提供相对的URL如“/index.php,重定向会在效力器内部进展。这种方法很少用,由于阅读器并不知道它得到的页面能否是所恳求的。假设在新的文档中存在相对URL,阅读器会将它们解释成相对于所恳求的文档,而不是被发送的文档。设置过期时间
26、设置过期时间 效力器可以显式地通知阅读器文档的过期时间。代理效力器和阅读器缓存在过期之前可坚持文件,或提早终了它。重新载入一个被缓存的页面不需求和效力器进展通讯。但是尝试获取一个曾经过期的文档就需要与效力器获得联络。 为一个文档设置过期时间,运用的是Expires头:header(Expires: Mon, 08 Jul 2019 08:08:08 GMT); 例如:控制文档在页面生成后的2小时后过期。运用time()和gmstrftime()函数生成过期日期字符串: HTTP认证认证 HTTP认证 authentication经过恳求的header和呼应形状来任务。浏览器可以将用户名和密码放在恳求的头里发送。假设认证凭证credential,即指用户名和密码未发送或者不匹配,效力器将发送一个“401 Unauthorized呼应并经过WWW认证头来确定当前认证的区域realm一个字符串,诸如“Marys Pictures或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氢能源理论试题及答案
- 洁牙师考试题及答案
- 融通物业面试题及答案
- 用地报批面试题及答案
- 音质设计试题及答案
- 广东点心试题及答案
- 2025年电缆工程专业毕业设计开题报告
- 2025年五百强销售面试题目及答案
- 2025年人保轮岗考试题库及答案
- 2025年电力业扩报装考试题库
- 主机厂车辆采购合同范本
- 2025年交通安全法规题库及答案
- 2025年乒乓裁判考试题及答案
- 咳嗽变异性哮喘病例分析
- 检验检测机构授权签字人考核试题(+答案)
- 种植基地考核管理办法
- 重庆市2025年中考英语真题试卷(含答案)
- 小小特种兵训练活动方案
- TCFCR 011-2025 社会文物鉴定质检服务机构执业能力认可管理体系
- (网络+收集版)2025年高考全国二卷语文高考真题文档版(无答案)
- 2025年中国汽车用LED尾灯市场现状分析及前景预测报告
评论
0/150
提交评论