PHP的状态管理与表单处理

上传人:cl****1 文档编号:586744265 上传时间:2024-09-05 格式:PPT 页数:51 大小:507.52KB
返回 下载 相关 举报
PHP的状态管理与表单处理_第1页
第1页 / 共51页
PHP的状态管理与表单处理_第2页
第2页 / 共51页
PHP的状态管理与表单处理_第3页
第3页 / 共51页
PHP的状态管理与表单处理_第4页
第4页 / 共51页
PHP的状态管理与表单处理_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《PHP的状态管理与表单处理》由会员分享,可在线阅读,更多相关《PHP的状态管理与表单处理(51页珍藏版)》请在金锄头文库上搜索。

1、第9章 PHP的状态管理与表单处理n n9-1 PHP9-1 PHP状态管理的基础状态管理的基础n n9-2 PHP9-2 PHP的表单处理的表单处理n n9-3 9-3 文字与密码方块文字与密码方块n n9-4 9-4 文字区域文字区域n n9-5 9-5 核取方块核取方块n n9-6 9-6 下拉式清单方块下拉式清单方块n n9-7 9-7 选择钮选择钮n n9-8 9-8 隐藏栏位隐藏栏位n n9-9 9-9 表单栏位验证表单栏位验证9-1 PHP状态管理的基础n n9-1-1 HTTP通讯协定的特性n n9-1-2 状态管理的种类9-1 PHP状态管理的基础n n当PHP程序在伺服端执

2、行时,因为HTTP通讯协定并不会保留客户端的使用者状态,所以浏览不同的PHP程序时,PHP程序需要将使用者状态传递给下一页浏览的PHP程序,称为状态管理(State Management)。n n简单的说,状态管理是在保留客户端使用者状态,以便PHP网站可以取得使用者状态来正确的执行PHP程序。9-1-1 HTTP通讯协定的特性n nHTTPHTTPHTTPHTTP通讯协定不会持续保持连线通讯协定不会持续保持连线通讯协定不会持续保持连线通讯协定不会持续保持连线:只有当浏览程只有当浏览程序提出请求时才会建立连线,在请求后就断线等序提出请求时才会建立连线,在请求后就断线等待回应,每一次请求和回应都

3、需事先建立连线。待回应,每一次请求和回应都需事先建立连线。n nHTTPHTTPHTTPHTTP通讯协定并不会保留状态通讯协定并不会保留状态通讯协定并不会保留状态通讯协定并不会保留状态:因为因为HTTPHTTP通讯协通讯协定并不会保持连线,所以在连线时,伺服端和客定并不会保持连线,所以在连线时,伺服端和客户端互相知道对方,一旦请求结束,就互不相干,户端互相知道对方,一旦请求结束,就互不相干,使用者状态并不会保留。使用者状态并不会保留。n nHTTPHTTPHTTPHTTP通讯协定与资料类型无关通讯协定与资料类型无关通讯协定与资料类型无关通讯协定与资料类型无关:任何种类的资料任何种类的资料都可以

4、透过都可以透过HTTPHTTP通讯协定传送到客户端,这就是通讯协定传送到客户端,这就是Content-TypeContent-Type标头信息指定的标头信息指定的MIMEMIME资料类型。资料类型。9-1-2 状态管理的种类-说明n n状态管理(State Management)是在PHP程序间传递资料,以便不同PHP程序能够保留使用者状态。状态管理以状态信息储存的位置,可以区分成两大类:储存在客户端储存在伺服端9-1-2 状态管理的种类-客户端的状态管理n n客户端的状态管理是将资料储存在使用者计算机,或是储存在HTML网页或PHP程序建立的HTML标签中,以便将资料传递给下一页PHP程序,

5、常用的方法如下表所示:9-1-2 状态管理的种类-伺服端的状态管理n n伺服端的状态管理是将资料储存在伺服端的计算机,换句话说,状态管理的使用者状态信息会占用服务器的资源,常用的方法如下表所示:9-2 PHP的表单处理与URL参数n n9-2-1 网页表单的用途n n9-2-2 HTML标签建立网页表单n n9-2-3 $_POST与$_GET结合阵列变量n n9-2-4 URL参数传递资料9-2-1 网页表单的用途n nPHP程序是在伺服端执行,换句话说,客户端网页只负责取得使用者输入的资料,然后将输入资料送到伺服端进行处理,使用的是HTML网页表单,如下图所示:9-2-2 HTML标签建立

6、网页表单-标签n n在HTML标签关于网页表单的标签只有五个,如下表所示:9-2-2 HTML标签建立网页表单-架构 . . 9-2-2 HTML标签建立网页表单-标签的属性n nname属性:表单名称。n nmethod属性:设定资料送出方式,如下:form name=order method=postn naction属性:设定PHP表单处理程序所在的路径,也可以是URL网址,如下所示:form name=order method=post action=Ch9-3-2.phpn nenctype属性:设定表单资料传送时的编码方式。9-2-3 $_POST与$_GET结合阵列变量-说明n

7、nPHPPHP的表单处理是使用的表单处理是使用PHPPHP的的预定变量预定变量(Predefined VariablesPredefined Variables)取得栏位资料,预定取得栏位资料,预定变量不同于使用者宣告的变量,属于变量不同于使用者宣告的变量,属于PHPPHP引擎建引擎建立的变量。立的变量。n nPHPPHP关于表单处理的预定变量是一种预设拥有全关于表单处理的预定变量是一种预设拥有全域变量范围的结合阵列变量,一共有域变量范围的结合阵列变量,一共有2 2个,其说明个,其说明如下表所示:如下表所示:9-2-3 $_REQUEST结合阵列变量-说明n nPHP4.0PHP4.0以上版本

8、以上版本 $_REQUEST$_REQUEST亦可取得栏位资料。亦可取得栏位资料。9-2-3 $_POST与$_GET结合阵列变量-范例n n例如:网页表单拥有名为Username的栏位,在PHP程序码可以使用上表的预定变量取得栏位值,如下所示:$name = $_POSTUsername;$name = $_POSTUsername;$name = $_GETUsername;$name = $_GETUsername;n n上述程序码可以取得结合阵列的元素值,即栏位输入的内容。9-2-3 $_POST与$_GET结合阵列变量-使用n nPHP程序码到底是使用$_POST或$_GET变量,需

9、视HTML表单标签的method属性值而定,如下表所示:9-2-4 URL参数传递资料-标签n nPHP除了可以使用本章后的表单来传递资料外,还可以使用超连结URL参数或是header()函数(详见第10章的说明)转址传送资料给其他PHP程序,如下所示:登入网站n n标签的超连结传递Username和Password一共两个参数。9-2-4 URL参数传递资料-取得参数值n nPHP程序取得超连结传递参数如同表单的get方法,可以使用$_GET阵列变量取得参数或栏位值,如下所示:$username = $_GETUsername;$pass = $_GETPassword;9-3 文字与密码方

10、块n n9-3-1 文字与密码方块栏位n n9-3-2 取得文字与密码方块栏位的内容9-3-1 文字与密码方块栏位-语法n n文字和密码方块都可以输入一段文字内容,唯一的差别在于密码栏位输入的资料并不会显示出来,而是使用小圆点或*星号代替,其基本语法如下所示:input type=value=String9-3-1 文字与密码方块栏位-属性n n语法的属性说明,如下表所示:9-3-2 取得文字与密码方块栏位的内容n n在建立好文字与密码方块的HTML表单后,我们就可以撰写PHP程序取得栏位内容。文字与密码栏位是直接将输入资料传到服务器,PHP程序只需使用$_POST结合阵列变量就可以取得栏位内

11、容,如下所示:$username = $_POSTUser;$password = $_POSTPass;n n上述程序码的阵列键值是表单栏位的名称属性name,分别为:User文字方块和Pass密码方块的内容。9-4 文字区域n n9-4-1 文字区域栏位n n9-4-2 取得文字区域栏位的内容9-4-1 文字区域栏位-语法n n当需要输入整个段落或整篇文字时,我们就可以在表单使用文字区域栏位,其基本语法如下所示:textarea name=Name rows=value value=String9-4-1 文字区域栏位-属性n n语法的属性说明,如下表所示:9-4-2 取得文字区域栏位的内

12、容n n在建立文字区域栏位的HTML表单后,就可以撰写PHP程序取得栏位内容,如下所示:$msg = $_POSTMessage;print 意见:.nl2br($msg).;n n上述程序码取得名为Message文字区域的内容,因为HTML标签显示栏位内容时,并不会显示换行,所以呼叫nl2br()函数将换行符号n替换成换行标签。9-5 核取方块n n9-5-1 核取方块栏位n n9-5-2 取得核取方块栏位的内容9-5-1 核取方块栏位-语法n n表单栏位的核取方块如同一个开关,可以勾选或取消勾选来设定是否使用此功能,其基本语法如下所示:input type=checkbox name=Na

13、me checked value=String9-5-1 核取方块栏位-属性n n语法的属性说明,如下表所示:9-5-2 取得核取方块栏位的内容n n核取方块在表单扮演的角色是一个开关,PHP程序取得核取方块栏位内容是使用isset()检查栏位是否勾选,传回值是栏位的value属性值,如下所示:if (isset($_POSTie) print 使用Internet Explorer;n n上述if条件检查ie核取方块是否被勾选,如果isset()传回true,就表示使用者勾选核取方块,每一个核取方块都可以使用相同方式进行检查。9-6 下拉式清单方块n n9-6-1 下拉式清单方块栏位n n9

14、-6-2 取得下拉式清单方块栏位的内容n n9-6-3 取得清单方块栏位的内容9-6-1 下拉式清单方块栏位-种类n n下拉式清单方块:下拉式清单方块:当size属性值为1时只显示一个选项,需要按右边钮才能显示其他选项,如下图所示:n n清单方块:清单方块:和下拉式清单方块一样,只不过显示的选项不只一个,size属性为显示的选项数,如果选项太多超过清单方块尺寸,视窗就会出现卷动轴帮助检视选项,如下图所示:9-6-1 下拉式清单方块栏位-语法n nHTMLHTML的的标签需要配合标签需要配合标签标签的选项,才能建立下拉式清单方块栏位,其基本的选项,才能建立下拉式清单方块栏位,其基本语法,如下所示

15、:语法,如下所示:select name=Name size=number 选项名称选项名称 选项名称选项名称 . .9-6-1 下拉式清单方块栏位-属性n n标签的属性说明,如下表所示:n n标签的属性说明,如下表所示:9-6-2 取得下拉式清单方块栏位的内容n n下拉式清单方块栏位会将选项标签属性value的值传送到服务器,在PHP程序是使用$_POST结合阵列取得栏位内容,如下所示:$gender = $_POSTGender;$gender = $_POSTGender;n n上述程序码取得下拉式清单方块Gender的值,此值就是使用者选择选项的value属性值。9-6-3 取得清单方

16、块栏位的内容-标签n n清单方块如果是单选,清单方块如果是单选,PHPPHP处理程序取得选择的处理程序取得选择的方式和下拉式清单方块相同,如果是复选的清单方式和下拉式清单方块相同,如果是复选的清单方块栏位,方块栏位,HTMLHTML表单标签的栏位名称是一个阵表单标签的栏位名称是一个阵列,如下所示:列,如下所示:select name= size=4 multiple n n上述上述标签的标签的namename属性为属性为WebsWebs,表,表示示PHPPHP取得的栏位值是一个阵列,接着我们可以取得的栏位值是一个阵列,接着我们可以使用使用if if或或switchswitch条件叙述来判断使用

17、者的选择。条件叙述来判断使用者的选择。9-6-3 取得清单方块栏位的内容-取得栏位内容n n在PHP程序一样是使用$_POST取得栏位内容,只不过取得的栏位内容是一个阵列,如下所示:$webs = $_POSTWebs;n n上述程序码取得清单方块栏位Webs的阵列值,可以使用foreach循环配合switch条件进一步判断使用者复选的选项。9-7 选择钮n n9-7-1 选择钮栏位n n9-7-2 取得选择钮栏位的内容9-7-1 选择钮栏位-语法n n选择钮能够在表单设计一组选项,每一个选项名称旁有一个圆形的选项钮,属于多选一的单选题,其基本语法如下所示:9-7-1 选择钮栏位-属性n n语

18、法的属性说明,如下表所示:9-7-2 取得选择钮栏位的内容n n选择钮栏位是一个单选题,其处理方式和单选的下拉式清单方块相同,也是将标签属性value值传送到服务器,使用$_POST结合阵列取得选择钮栏位的内容,如下所示:$gender = $_POSTGender;n n上述程序码取得选择钮Gender的值,此值是选取选项的value属性值,换句话说,依属性值就可进一步使用if或switch条件叙述判断使用者的选择。9-8 隐藏栏位n n9-8-1 隐藏栏位n n9-8-2 取得隐藏栏位的内容9-8-1 隐藏栏位n n隐藏栏位并不需使用者输入资料,而是直接将value属性值传送到伺服端,通常

19、是用来传送表单的环境参数,或是在不同网页表单间传递资料,其基本语法如下所示:input type=value=Stringn n上述语法的属性说明,如下表所示:9-8-2 取得隐藏栏位的内容n n隐藏栏位和文字或密码方块一样,在伺服端只需使用$_POST结合阵列就可以取得隐藏栏位的内容,如下所示:$order = $_POSTOrder;n n上述程序码取得名为Order的隐藏栏位值,传送的是栏位属性value的值。9-9 表单栏位验证n n9-9-1 PHP程序如何验证表单n n9-9-2 表单栏位验证9-9-1 PHP程序如何验证表单-说明n n在PHP程序取得表单栏位资料并不困难,事实上

20、,我们反而需要多考量使用者输入的资料是否符合需求,在处理取得的资料前进行栏位资料的验证,检查使用者输入的资料是否符合所需的格式。n n当PHP程序使用$_POST或$_GET结合阵列取得栏位资料后,在真正处理资料前,我们可以使用if等条件叙述检查使用者输入的栏位资料是否正确,或资料是否空白,表示使用者忘了输入栏位资料。9-9-1 PHP程序如何验证表单-流程图n n如果使用者输入的资料有错误,PHP程序并不进行资料处理,而是显示错误讯息,然后回到表单网页要求使用者重新输入,表单栏位验证的流程图,如下图所示:9-9-1 PHP程序如何验证表单-实作n n在实作表单栏位验证时,我们可以使用两个PH

21、P程序:一是表单网页显示错误讯息,一是PHP处理程序,当错误产生时,就使用header()转址回网页表单(header()的说明请参阅第10章)。n n另一种方式是将表单和PHP处理程序写在同一个PHP程序,使用if条件判断是否是表单送回,如果是,再进行表单栏位验证和处理。在下一节笔者准备使用此方式建立表单栏位验证。9-9-2 表单栏位验证-判断是否是表单送回n nPHPPHP程序进行栏位验证时,因为表单和处理程序程序进行栏位验证时,因为表单和处理程序写在同一个程序档案,所以写在同一个程序档案,所以PHPPHP程序需要判断显程序需要判断显示表单内容,或是输入资料后的表单送回,可以示表单内容,或

22、是输入资料后的表单送回,可以执行表单栏位验证,如下所示:执行表单栏位验证,如下所示:if ( isset($_GETReg) ) if ( isset($_GETReg) ) / / 表单处理表单处理 n n上述上述if if条件可以判断使用者是否按下表单按钮,因条件可以判断使用者是否按下表单按钮,因为表单使用为表单使用getget方法,所以在方法,所以在PHPPHP程序是使用程序是使用$_GET$_GET结合阵列。结合阵列。9-9-2 表单栏位验证-栏位验证n n如果按下按钮,就表示使用者已经输入资料,将表单送回进行处理,所以我们可以开始执行栏位资料的检查,接着进行表单处理。n n如果栏位有错误,就不进行表单处理,直接显示网页表单,以便重新让使用者输入正确的栏位资料。9-9-2 表单栏位验证-保留信息n n因为HTTP通讯协定并不能保留状态,当错误发生回到表单后,就算是一些输入正确的栏位也一样需要重新输入,为了保留使用者已经输入正确的栏位资料,表单栏位在栏位的value属性有设定预设值,如下所示:input type=text name=Name input type=text name=Name size =10“ size =10“ value= value=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号