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

上传人:sh****n 文档编号:6402331 上传时间:2020-02-24 格式:PPT 页数:27 大小:550.50KB
返回 下载 相关 举报
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还会创建一个 SERVER PHP SELF 的变量 用于存放当前脚本的路径和名称 相对于文档根目录 例如 08 stat php 表单处理 表单处理包括 方法 Method 对参数进行自动引号处理自处理页面粘性表单多值参数粘性多值参数文件上传表单验证 表单处理 方法客户端可以用两种HTTP方法向服务器传送表单数据 GET和POST 采用哪种方法是由表单标签 中的method属性所指定的 注意 理论上说在HTML中method是不区分大小写的 但是实际上有些浏览器要求method为大写 GET方法 一个GET请求把表单的参数编码成URL形式 称为查询字符串 querystring path to index php subject despicable length 3POST方法 一个POST提求则通过HTTP请求的主体来传递表单参数 不需要考虑URL 表单处理 GET方法与POST方法的区别GET和POST方法的最明显区别是URL行 因为GET请求的所有表单参数都编码在URL中 用户可以把一个GET请求加入浏览器收藏夹 而对POST请求却无法这样做 HTTP规范指明GET请求是幂等的 idempotent 即对于一个特定URL的GET请求 包含表单参数 与对应于这一特定URL的两个或多个GET请求是一样的 因此 Web浏览器可以把GET请求得到的响应页面缓存起来 这是因为不管页面被请求了多少次 响应页面都是不变的 正因为幂等性 GET请求中用于那些响应页面永不改变的性况 例如将一个单词分解成小块 或者对数字进行乘法运算 表单处理 GET方法与POST方法的区别POST请求不具幂等性 这意味着它们无法被缓存 在每次刷新页面时 都会重新连接服务器 显示或者刷新页面时 你可能会看到浏览器提示 Repostformdata 重新发送表单数据 所以POST适用于响应内容可能会随时间改变的情况 例如 显示购物车的内容 或者在一个论坛中显示当前主题 现实中 幂等性常常被忽略 目前浏览器的缓存功能都很差 并且 刷新 按钮很容易被用户点到 所以程序员通常只考虑是否想将参数显示在浏览器的URL地址栏上 如果不想显示 就用POST方法 但你要记住 在服务器的响应页面可能会变化的情况下 例如下订单或者更新数据库 不要使用GET方法 表单处理 对参数进行自动引号处理如果php ini中的magic quotes gpc选项启用 那么PHP将在所有cookie数据以及GET和POST参数上自动调用addslashes 函数 这使得在数据库查询中使用表单参数变得简单 但同时也对那些没有在数据库查询中使用的表单参数造成了麻烦 因为这需要在单引号 双引号 反斜杆和空字节等前面添加上反斜杆以进行转义 例如 在文本框中输入 PHP MRSOFT 并单击提交按钮 你就会发现被分块的字符串其实是 PHP MRSOFT 这就是magic quotes gpc的作用 表单处理 为了处理用户输入的字符串 可以禁用php ini中的magic quotes gpc选项或者对 GET POST 和 COOKIES使用stripslashes 函数进行转义还原 其方法如下 value ini get magic quotes gpc stripslashes GET word GET word 如果需要处理大量字符串 还可以封装一个自定义函数 functionraw param name returnini get magic quotes gpc stripslashes GET name GET name 表单处理 自处理页面所谓自处理页面 就是一个PHP页面能同时用来生成表单和处理表单 实现此功能有两种方法 第一种方法 应用 SERVER REQUEST METHOD 获取表单中method的值 如果它的值为GET 则生成表单 如果它的值为POST则处理表单 第二种方法 通过isset 函数判断指定的参数是否被创建 如果存在则执行处理表单的操作 否则执行生成表单的操作 表单处理 粘性表单很多网站使用一种称为 粘性表单 stickyform 的技术 用这种技术 设置一个查询表单的默认值为先前查询的值 例如 如果在百度 上查询 明日科技 则在结果页面的顶端的另一个查询文本框中 包含先前的查询关键字 明日科技 如果将查询的关键字改为 明日科技编程词典 那么只要简单地在后面补充即可 这就是粘性表单 表单处理 多值参数用HTML中的select标签创建选择列表 允许用户进行多重选择 为了确保PHP识别浏览器传递来的多个值 需要在HTML表单的字段名后加上 例如 CC PHPPer1现在 当用户提交表单时 POST languages 包含一个数组而不是一个字符串 这个数组包含用户所选择的值 表单处理 粘性多值参数实现多值参数的表单具有粘性的方法 封装一个自定义函数 改编复选框创建的方式 以此来达到表单的粘性功能 自定义函数make checkbox的语法如下 functionmake checkbox name checked option foreach optionas 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数组中每个元素的含义 如下所示 FILES filename name 浏览器提供的文件名 使用价值不大 因为客户端机器上的文件名约定有可能和Web服务器不同 例如 如果客户机为Windows系统 文件名可能为 C PHOTOS ME JPG 而服务器为Unix系统 那么这个文件路径没什么意义 FILES filename size 已上传文件的大小 单位为字节 如果用户试图上传一个过大的文件 它的大小将被置为0 FILES filename tmp name 文件上传到服务器后 在服务器中的临时文件名 FILES filename type 从客户端上传的文件类型 例如 image gif 主类型为 图像 子类型为GIF格式的文件 text html 代表文本的HTML文件 表单处理 FILES filename error 返回在上传过程中发生错误的错误代号 错误代号有5种 如下所示 0 表示没有任何错误 文件上传成功1 表示上传文件的大小超出了PHP配置文件指令upload max filesize选项限制的值2 表示上传文件大小超出了HTML表单中MAX FILE SIZE选项所指定的值3 表示文件只被上传了一部分4 表示没有上载任何文件PHP中应用is uploaded file 函数判断指定的文件是否是通过HTTPPOST上传的 如果是则返回TRUE 则可以继续执行文件的上传操作 否则将不能够继续执行 语法 boolis uploaded file stringfilename 说明 参数filename必须指定类似于 FILES filename tmp name 的变量 不可以使用从客户端上传的文件名 FILES filename name 表单处理 通过is uploaded file 函数对上传文件进行判断 可以确保恶意的用户无法欺骗脚本去访问本不能访问的文件 例如 etc passwd PHP中应用move uploaded file 函数将文件上传到服务器中指定的位置 如果成功返回TRUE 否则返回FALSE 语法 boolmove uploaded file stringfilename stringdestination 说明 参数filename指定上传文件的临时文件名 即 FILES tmp name 参数destination指文件上传后保存的新路径和名称 说明 如果参数filename不是合法的上传文件 不会执行任何操作 move uploaded file 将返回FALSE 如果参数filename是合法的上传文件 但出于某些原因无法移动 同样也不会执行任何操作 move uploaded file 将返回FALSE 此外还会发出一条警告 表单处理 表单验证在使用和存储表单提交的数据时 通常需要对这些数据进行验证 其验证的方法很多 首先是在客户端使用JavaScript 但是用户可以禁用JavaScript 甚至使用一个不支持JavaScript的浏览器 所以用这个方法还不够 更为稳妥的方式是通过PHP来完成验证 验证表单元素是否为空 首先通过isset 函数检测变量是否设置 然后通过empty 检测变量是否为空 通过PHP对具体的表单元素值进行验证 如果是单纯的数字 英文字符串 字符串大小写的区分等等 PHP中有相应的函数可以独立完成 但是 如果是对电话号码 Email或者IP地址等进行验证时 必须借助正则表达式的帮助 设置响应头内容 设置响应头内容有哪些 不同的内容类型重定向设置过期时间HTTP认证文件下载 设置响应头 使用header 函数来设置头部语法 voidheader stringstring boolreplace inthttp 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 08Jul201108 08 08GMT 例如 控制文档在页面生成后的2小时后过期 使用time 和gmstrftime 函数生成过期日期字符串 HTTP认证 HTTP认证 HTTPauthentication 通过请求的header和响应状态来工作 浏览器可以将用户名和密码放在请求的头里发送 如果认证凭证 credential 即指用户名和密码 未发送或者不匹配 服务器将发送一个 401Unauthorized 响应并通过WWW认证头来确定当前认证的区域 realm 一个字符串 诸如 Mary sPictures 或 YourShoppingCart 这通常会导致浏览器弹出一个 Enterusernameandpasswordfor 对话框 且该页面会重新请求更新头中的认证凭证为了用PHP来处理认证 可检查用户名和密码 SERVER数组中的PHP AUTE USER和PHP AUTH PW两个元素 并调用header 函数来设置区域 然后发送一个 401Unauthorized 响应 其关键代码如下 header WWW Authenticate Basicrealm TopSecretFiles header HTTP 1 0401Unauthorized HTTP认证 header 函数还可以强制客户端每次访问页面时获取最新资料 而不是使用存在于客户端的缓存 其关键代码如下 header Expires Mon 08Jul201108 08 08GMT header Last Modified gmdate D dMYH 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格式的下载文件 其关键代码如下 Thankyou
展开阅读全文
相关资源
相关搜索

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


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

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


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