第7章 构建PHP互动网页.ppt_第1页
第7章 构建PHP互动网页.ppt_第2页
第7章 构建PHP互动网页.ppt_第3页
第7章 构建PHP互动网页.ppt_第4页
第7章 构建PHP互动网页.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 构建PHP互动网页,7 . 1 PHP与表单,7 . 2 URL处理,7 . 3 页 面 跳 转,7 . 4 会 话 管 理,7 . 5 实例制作一个PHP互动网页,7 . 1 PHP与表单,7.1.1 提交表单数据 表单数据的提交方法主要分为两种:POST方法和GET方法。POST方法是在HTTP请求中嵌入表单数据;GET方法则将表单数据附加到请求该页的URL中。提交表单时要将表单标记的属性method设为post或get,post表示使用POST方法提交,get表示使用GET方法提交。属性action指定数据提交到的URL地址,提交后页面将跳转到这个地址。而用户输入的数据也将提交到

2、该地址。例如: ,7.1.2 接收表单数据,提交表单数据后就可以在目标页面接收用户输入的数据了。接收表单数据可以使用$_POST、$_GET和$_REQUEST来完成。$_POST用于接收POST方法传来的值,$_GET用于接收GET方法传来的值,$_REQUEST可以取得包括POST、GET和Cookie在内的外部变量。 表单中可以包含很多的控件,如文本框、单选按钮、复选框、文件域、滚动文本框、按钮等。接收表单数据即指获取表单控件的value属性的值。不同的控件可以设置不同的name属性,在接收数据时根据name属性确定是哪个控件的值。不同的控件设置value属性的方式也不一样。例如,单选按

3、钮可能由多个选项组成,这些选项的name属性值都相同时表示这些选项属于同一个表单控件,每个选项都有一个value值,接收控件的值后可以根据这个value值判断用户选择了哪个选项。,7.1.3 常用表单数据的验证方法,表单数据的验证一般可以使用正则表达式(见4.3节)来完成。例如,一个简单的验证日期的正则表达式可以写做“d4-(0?d|1?012)-(0?d|12d|301)$”。验证E-mail格式的正则表达式可以写做“a-zA-Z0-9_-+a-zA-Z0-9-+.a-zA-Z0-9-.+$”。,7.1.4 实例使用PHP处理表单数据,【例7.1】 制作一个学生信息表单,包含学生学号、姓名、

4、性别、出生日期、所学专业、备注、兴趣爱好等信息。要求学号必须为6位数字,出生日期必须符合日期格式,学号和姓名不允许为空。表单数据以GET方法提交到另一个页面,在另一个页面判断表单数据的正确性并输出。 新建EX7_1_Hpage.php文件,输入代码。 再新建EX7_1_Ppage.php文件,输入代码。,7.1.4 实例使用PHP处理表单数据,运行EX7_1_Hpage.php文件,如图7.1所示。,7.1.4 实例使用PHP处理表单数据,在表单中输入学生信息,然后单击【提交】按钮验证输入的信息。运行结果示例如图7.2所示。,7 . 2 URL处理,7.2.1 获取URL参数 URL通常的格式

5、为:“url?参数1=值1 /单击超链接后输出王林 ?,7.2.2 解析URL,在PHP中可以使用parse_url()函数解析一个URL,语法格式如下: mixed parse_url ( string $url , int $component = -1 ) 说明:$url为要解析的URL地址字符串。本函数不是用于解析URL的合法性,不完整的URL也可接受。除了对于严重不合格的URL,该函数将返回FALSE并发出警告外,如果省略了component 参数,函数将返回一个关联数组,包含URL中出现的各个组成部分。其组成部分为(至少有一个): scheme。如http。 host。如。 por

6、t。端口号。 user。用户名。 pass。密码。 path。路径。 query。在问号“?”之后的内容。 fragment。在散列符号#之后的内容。,7.2.2 解析URL,例如: http host = user = username pass = password path = /index.php query = arg=value fragment = anchor ) */ ?,7.2.2 解析URL,PHP 5.1.2增加了参数component,它指定PHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_PORT、PHP_URL_USER、PHP_URL_PA

7、SS、PHP_URL_PATH、PHP_URL_QUERY或PHP_URL_FRAGMENT的其中一个来获取URL中指定部分的string(除了指定为PHP_URL_PORT后,将返回一个integer的值)。例如: 输出结果:/path。,7.2.3 URL编解码,在PHP中对URL编码使用urlencode()函数,语法格式如下: string urlencode(string $str) 说明:$str为要编码的字符串,该函数返回一个编码后的字符串。例如: URL编码后需要使用urldecode()函数进行解码,语法格式如下: string urldecode(string $str)

8、该函数将对字符串$str中所有以百分号“%”开头后跟2位十六进制数的3位字符串进行解码,并返回解码后的字符串。例如: ,7 . 3 页 面 跳 转,7.3.1 使用header()函数 在5.1.5节曾介绍过header()函数的作用,其中一个作用就是页面跳转,只要在header()函数的参数中使用“Location: xxx”即可实现该功能。例如: ,7.3.2 使用HTML标记,最常用的跳转页面的方法是提交表单,将标记的action属性设置为要跳转到的页面,提交表单后就跳转到该页面。例如: 使用HTML的超链接标记也能够实现跳转页面的功能,例如: 单击超链接; ?,7.3.2 使用HTML

9、标记,使用按钮也可以进行页面跳转,只需要在按钮控件的onclick方法中设置执行的代码即可,例如: ; ? 使用HTML实现页面跳转的另外一种方法是使用标记,实例代码如下: 说明:以上代码的作用是5s之后跳转到index.php页面。content属性中数字5表示5s之后跳转,设置为0则表示立即跳转,url选项可以指定要跳转到的页面。如果要刷新本页面,则可以省略url选项,代码如下: ,7.3.3 使用客户端脚本,在PHP中还可以使用客户端脚本实现页面的跳转,例如,在PHP中使用JavaScript跳转到index.php页面的代码如下: if(confirm(确认跳转页面?) ; echo

10、window.location=index.php; /上面一句也可写做echo location.href=index.php; ; ?,7 . 4 会 话 管 理,7.4.1 会话的工作原理 PHP的会话也称为Session。PHP在操作Session时,在用户登录或访问一些初始页面时服务器会为客户端分配一个SessionID。SessionID是一个加密的随机数字,在Session的生命周期中保存在客户端。它可以保存在用户机器的Cookie中,也可以通过URL在网络中进行传输。 用户通过SessionID可以注册一些特殊的变量,称为会话变量,这些变量的数据保存在服务器端。在一次特定的网站

11、连接中,如果客户端可以通过Cookie或URL找到SessionID,那么服务器就可以根据客户端传来的SessionID访问会话保存在服务器端的会话变量。,7.4.2 实现会话,1初始化会话 在实现会话功能之前必须初始化会话,初始化会话使用session_start()函数,语法格式如下: bool session_start(void) 该函数将检查SessionID是否存在,如果不存在则创建一个,并且能够使用预定义数组$_SESSION进行访问。如果启动会话成功则函数返回TRUE,否则返回FALSE。会话启动后就可以载入该会话已经注册的会话变量以便使用。,7.4.2 实现会话,2注册会话变

12、量 自PHP 4.1以后,会话变量保存在预定义数组$_SESSION中,所以可以以直接定义数组单元的方式来定义一个会话变量,格式如下: $_SESSION键名=值; 定义后该会话变量保存为$_SESSION数组的一个单元,例如: ,7.4.2 实现会话,3访问会话变量 要在一个脚本中访问会话变量,首先要使用session_start()函数启动一个会话。之后就可以使用$_SESSION数组访问该变量了。例如: ,7.4.2 实现会话,4销毁会话变量 会话变量使用完后,删除已经注册的会话变量以减少对服务器资源的占用。删除会话变量使用unset()函数,语法格式如下: void unset(mix

13、ed $var , mixed $var , $. ) 说明:$var是要销毁的变量,可以销毁一个或多个变量。例如: 要一次销毁所有的会话变量,可以使用以下语句: session_unset();,7.4.2 实现会话,5销毁会话 使用完一个会话后,要注销所有的会话变量,然后再调用session_destroy()函数销毁会话,语法格式如下: bool session_destroy ( void ) 该函数将删除会话的所有数据并清除SessionID,关闭该会话。例如: ,7.4.2 实现会话,【例7.2】 创建一个用户登录页面,设定的用户名和密码分别为administrator和12345

14、6。表单提交到本页面,当用户名和密码输入正确时,启动Session,将用户名和密码值传到用户管理员页面。如果不先登录而访问用户管理员页面则提示无权访问。 新建EX7_2_1.php文件,输入代码。 新建EX7_2_2.php文件,输入以下代码: ,7.4.2 实现会话,运行EX7_2_1.php文件,在页面中输入用户名和密码,如图7.3所示。单击【登录】按钮,结果如图7.4所示。,图7.3 用户登录界面,图7.4 管理员界面,7.4.3 Cookie技术,值得注意的是,Cookie技术有很多局限性,例如: 多人共用一台计算机,Cookie数据容易泄露; 一个站点存储的Cookie信息有限; 有

15、些浏览器不支持Cookie; 用户可以通过设置浏览器选项来禁用Cookie。,7.4.3 Cookie技术,1创建Cookie 在PHP中创建Cookie使用setcookie()函数,语法格式如下: bool setcookie(string $name , string $value , int $expire , string $path , string $domain , bool $secure , bool $httponly ) 本函数的参数如下: $name。表示Cookie的名字。 $value。表示Cookie的值,该值保存在客户端,所以不要保存比较敏感的数据。 $exp

16、ire。表示Cookie过期的时间,这是一个UNIX时间戳,即从UNIX纪元开始的秒数。对于$expire的设置一般通过当前时间戳加上相应的秒数来决定。例如,time()+1200表示Cookie将在20分钟后失效。 $path。表示Cookie在服务器上的有效路径。默认值为设定Cookie的当前目录。 $domain。表示Cookie在服务器上的有效域名。例如,要使Cookie能在域名下的所有子域都有效,该参数应设为。 $secure。表示Cookie是否仅允许通过安全的HTTPS协议传输。取值为1或0,当设成1时Cookie仅允许通过HTTPS传输,设成0表示允许通过普通HTTP协议传输。

17、默认值为0。,7.4.3 Cookie技术,例如: ,7.4.3 Cookie技术,2访问Cookie 通过setcookie()函数创建的Cookie是作为数组的单元,存放在预定义变量$_COOKIE中的。也就是说,直接对$_COOKIE数组单元进行赋值也可以创建Cookie。但$_COOKIE数组创建的Cookie在会话结束后就会失效。例如: 123456 bdshare_firstime = 1398408989078 number = 081101 ) ? 访问Cookie的方法与Session类似,例如: ,7.4.3 Cookie技术,3删除Cookie Cookie在创建时指定了

18、一个过期时间,如果到了过期时间,Cookie将自动被删除。在PHP中没有专门删除Cookie的函数。如果为了安全方面的考虑,在Cookie过期之前就想删除Cookie,可以使用setcookie()函数或$_COOKIE数组将已知Cookie的值设为空。例如: 123456 bdshare_firstime = 1398408989078 user = ) ?,7.4.3 Cookie技术,【例7.3】 制作一个登录表单,将表单的值保存在Cookie中,并可以选择Cookie的有效时间。 新建EX7_3_1.php文件,输入代码。 新建EX7_3_2.php文件,输入以下代码: ,7.4.3 Cookie技术,运行EX7_3_1.php文件,输入用户名administrator,密码123456,Cookie选择保存1天,如图7.5所示。单击【登录】按钮,结果如图7.6所示。,7 . 5 实例制作一个PHP互动网页,【

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论