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

上传人:za****8 文档编号:14483758 上传时间:2020-07-21 格式:PPT 页数:27 大小:550.51KB
返回 下载 相关 举报
PHP入门第8章PHP与Web页交互.ppt_第1页
第1页 / 共27页
PHP入门第8章PHP与Web页交互.ppt_第2页
第2页 / 共27页
PHP入门第8章PHP与Web页交互.ppt_第3页
第3页 / 共27页
点击查看更多>>
资源描述
变量,这里的变量不是PHP脚本中的普通变量,而是PHP脚本中获取服务器环境信息,请求信息(包括表单参数和cookie)的方法。通常把这些信息统称为EGPCS(environment、GET、POST、cookies、server)。 这里主要讲解了如何获取这些变量的值,以及在php.ini文件中有关这些变量的设置。 如果php.ini文件中的register_globals选项被启用,PHP就会为第一个表单参数、请求信息服务器环境创建一个独立的全局变量。这个功能非常方便,它可以让浏览器为程序初始化任何变量。但这个功能也非常危险。这一点将在后面的章节中介绍。 如果忽略register_globals的设置,PHP将创建6个包含EGPCS信息的全局数组,通过它们获取EGPCS传递的数据。,变量,$_COOKIE:获取COOKIE中传递的所有cookie值,数组的键名是cookie名称。 $_POST:获取POST请求传递的参数,数组的键名是表单参数的名称。 $_GET:获取GET请求传递的参数值,数组的键名是表单参数的名称 $_FILES:获取上传文件的所有信息。 $_SERVER:获取服务器的相关信息. $_ENV:获取环境变量的值,键名是环境变量的名称。 以上这些变量不但是全局的,而且在函数的定义中也是可见的。$_REQUEST数组也由 PHP自动生成,包含了$_GET,$_POST,$_COOKIE三个数组的所有元素。 PHP还会创建一个$_SERVERPHP_SELF的变量,用于存放当前脚本的路径和名 称(相对于文档根目录,例如/08/stat.php)。,表单处理,表单处理包括: 方法(Method) 对参数进行自动引号处理 自处理页面 粘性表单 多值参数 粘性多值参数 文件上传 表单验证,表单处理,方法 客户端可以用两种HTTP方法向服务器传送表单数据:GET和POST 。 采用哪种方法是由表单标签()中的method属性所指定的。 注意:理论上说在HTML中method是不区分大小写的,但是实际上有些浏览器要求method为大写。 GET方法: 一个GET请求把表单的参数编码成URL形式,称为查询字符串(query string):/path/to/index.php?subject=despicable 如果需要处理大量字符串,还可以封装一个自定义函数: function raw_param ($name) return ini_get(magic_quotes_gpc) ?stripslashes($_GET$name) :$_GET$name; ,表单处理,自处理页面 所谓自处理页面,就是一个PHP页面能同时用来生成表单 和处理表单。实现此功能有两种方法: 第一种方法,应用$_SERVERREQUEST_METHOD获取表单中 method的值,如果它的值为GET,则生成表单;如果它的值为POST 则处理表单。 第二种方法,通过isset()函数判断指定的参数是否被创建,如果存 在则执行处理表单的操作,否则执行生成表单的操作。,表单处理,粘性表单 很多网站使用一种称为“粘性表单”(sticky form)的技术。 用这种技术,设置一个查询表单的默认值为先前查询的值。例如 :如果在百度()上查询“明日科技”,则 在结果页面的顶端的另一个查询文本框中,包含先前的查询关键 字“明日科技”。如果将查询的关键字改为“明日科技 编程词典”, 那么只要简单地在后面补充即可。这就是粘性表单。,表单处理,多值参数 用HTML中的select标签创建选择列表,允许用户进行多重选择。为 了确保PHP识别浏览器传递来的多个值,需要在HTML表单的字段名后 加上“”,例如: C C+ PHP Per1 现在,当用户提交表单时,$_POSTlanguages包含一个数组而 不是一个字符串。这个数组包含用户所选择的值。,表单处理,粘性多值参数 实现多值参数的表单具有粘性的方法: 封装一个自定义函数,改编复选框创建的方式,以此来达到表单的粘 性功能。自定义函数make_checkbox的语法如下: function make_checkbox($name, $checked, $option) foreach($option as $value = $label) printf(%s ,表单处理,自定义函数make_checkbox创建具有相同名称的复选框,其中参数 name指定复选框组的名称;参数checked设置复选框默认值;参数 option定义复选框的名称和值。,表单处理,文件上传 文件上传,通过表单中的文件域提交上传文件,通过$_FILES数组 处理文件,通过is_uploaded_file()函数验证上传文件,通过 move_uploaded_file()函数完成文件上传。 在PHP中上传文件最大的问题是对超大文件的处理。PHP有两种方法 避免出现这种情况:一个硬性限制和一个软性限制。 (1)在php.ini中文件中,可以对上传文件进行硬性限制。包括:是否 支持上传、上传文件的临时目录、上传文件的大小、指令执行的时间、 指令分配的内存空间。 (2)在表单中,在文件域之前添加一个名称为MAX_FILE_SIZE的隐 藏域,通过它的值可以实现上传文件大小的软限制。,表单处理,$_FILES全局数组为一个多维数组,用于获取通过POST方法上传 文件时的相关信息。如果是单文件上传,那麽数组为二维数组,如果是 多文件上传,那麽数组为三维数组。 $_FILES数组中每个元素的含义,如下所示。 $_FILESfilenamename:浏览器提供的文件名。使用价值不 大,因为客户端机器上的文件名约定有可能和Web服务器不同(例如: 如果客户机为Windows系统,文件名可能为“C:PHOTOSME.JPG”, 而服务器为Unix系统,那么这个文件路径没什么意义) $_FILESfilenamesize:已上传文件的大小。单位为字节。如 果用户试图上传一个过大的文件,它的大小将被置为0 $_FILESfilenametmp_name:文件上传到服务器后,在服务器中的临 时文件名 $_FILESfilenametype:从客户端上传的文件类型。例如:“image/gif”,主类型为“图像”,子类型为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,则可以继续执行文件的上 传操作,否则将不能够继续执行。 语法:bool is_uploaded_file ( string filename ) 说明:参数filename必须指定类似于$_FILESfilenametmp_name 的变量,不可以使用从客户端上传的文件名$_FILESfilenamename,表单处理,通过is_uploaded_file()函数对上传文件进行判断,可以确 保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。 PHP中应用move_uploaded_file()函数将文件上传到服务器中指定 的位置。如果成功返回TRUE,否则返回FALSE。 语法:bool move_uploaded_file ( string filename, string destination ) 说明:参数filename指定上传文件的临时文件名,即 $_FILEStmp_name;参数destination指文件上传后保存的新路径 和名称。 说明:如果参数filename不是合法的上传文件,不会执行任何操作, move_uploaded_file()将返回FALSE。如果参数filename是合法的上传文件 ,但出于某些原因无法移动,同样也不会执行任何操作, move_uploaded_file()将返回FALSE。此外还会发出一条警告。,表单处理,表单验证 在使用和存储表单提交的数据时,通常需要对这些数据进行验证,其 验证的方法很多。首先是在客户端使用JavaScript。但是用户可以禁用 JavaScript,甚至使用一个不支持JavaScript的浏览器,所以用这个方 法还不够。更为稳妥的方式是通过PHP来完成验证。验证表单元素是否 为空,首先通过isset()函数检测变量是否设置;然后通过empty()检测 变量是否为空。 通过PHP对具体的表单元素值进行验证,如果是单纯的数字、英文字 符串、字符串大小写的区分等等,PHP中有相应的函数可以独立完成。 但是,如果是对电话号码、Email或者IP地址等进行验证时,必须借助 正则表达式的帮助。,设置响应头内容,设置响应头内容有哪些: 不同的内容类型 重定向 设置过期时间 HTTP认证 文件下载,设置响应头,使用header()函数来设置头部 语法:void header ( string string , bool replace , int http_response_code ) 参数说明: String:必要参数。输入的头部信息 replace :可选参数。指明是替换掉前一条类似的标头还是 增加一条相同类型的标头。默认为替换,但如果将其设为false 则可以强制发送多个同类标头 http_response_code :可选参数。强制将HTTP响应代码 设为指定值,此参数是php5.3.0以后添加的。 注意:设置header一定要在生成主体内容之前完成,这意味着所有 header()(或setcookie(),如果你想设置cookie)要在文件的最前面,甚 至在标签之前,不同的内容类型,Content-Type头指定被返回文档的类型。它通 常是“text/html”,指明它是一个HTML文档,但还有 其他一些有用的文档类型。例如“text/plain”让浏览 器强制性地将内容当作纯文本来处理。这个类型就类 似于自动的“查看源代码”,它在调试时很有用。,重定向,通过header()函数可以向浏览器发送一个新的URL,并让 浏览器转向到这个地址。这样的重定向(redirection)操作, 只需要通过设置Location头即可。例如,通过header()函数重 定向到,其代码如下: header(Location: ); 重定向操作更倾向于绝对路径,如果提供相对的URL(如 “/index.php”),重定向会在服务器内部进行。这种方法很少 用,因为浏览器并不知道它得到的页面是否是所请求的。如果在 新的文档中存在相对URL,浏览器会将它们解释成相对于所请求 的文档,而不是被发送的文档。,设置过期时间,服务器可以显式地通知浏览器文档的过期时间。代理服务器和浏览 器缓存在过期之前可保持文件,或提前结束它。重新载入一个被缓存的 页面不需要和服务器进行通讯。但是尝试获取一个已经过期的文档就需 要与服务器取得联系。 为一个文档设置过期时间,应用的是Expires头: header(Expires: Mon, 08 Jul 2011 08:08:08 GMT); 例如:控制文档在页面生成后的2小时后过期。使用time()和 gmstrftime()函数生成过期日期字符串: ,HTTP认证,HTTP认证(HTTP authentication)通过请求的header和响应状态来工作。浏 览器可以将用户名和密码放在请求的头里发送。如果认证凭证(credential,即 指用户名和密码)未发送或者不匹配,服务器将发送一个“401 Unauthorized” 响应并通过WWW认证头来确定当前认证的区域(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); header(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,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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