您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > PHP的状态管理与表单处理
第9章PHP的状态管理与表单处理9-1PHP状态管理的基础9-2PHP的表单处理9-3文字与密码方块9-4文字区域9-5核取方块9-6下拉式清单方块9-7选择钮9-8隐藏栏位9-9表单栏位验证9-1PHP状态管理的基础9-1-1HTTP通讯协定的特性9-1-2状态管理的种类9-1PHP状态管理的基础当PHP程序在伺服端执行时,因为HTTP通讯协定并不会保留客户端的使用者状态,所以浏览不同的PHP程序时,PHP程序需要将使用者状态传递给下一页浏览的PHP程序,称为「状态管理」(StateManagement)。简单的说,状态管理是在保留客户端使用者状态,以便PHP网站可以取得使用者状态来正确的执行PHP程序。9-1-1HTTP通讯协定的特性HTTP通讯协定不会持续保持连线:只有当浏览程序提出请求时才会建立连线,在请求后就断线等待回应,每一次请求和回应都需事先建立连线。HTTP通讯协定并不会保留状态:因为HTTP通讯协定并不会保持连线,所以在连线时,伺服端和客户端互相知道对方,一旦请求结束,就互不相干,使用者状态并不会保留。HTTP通讯协定与资料类型无关:任何种类的资料都可以透过HTTP通讯协定传送到客户端,这就是Content-Type标头信息指定的MIME资料类型。9-1-2状态管理的种类-说明状态管理(StateManagement)是在PHP程序间传递资料,以便不同PHP程序能够保留使用者状态。状态管理以状态信息储存的位置,可以区分成两大类:•储存在客户端•储存在伺服端9-1-2状态管理的种类-客户端的状态管理客户端的状态管理是将资料储存在使用者计算机,或是储存在HTML网页或PHP程序建立的HTML标签中,以便将资料传递给下一页PHP程序,常用的方法如下表所示:使用方法說明表單欄位使用HTML表單欄位內容傳遞資料到其他PHP程式URL參數使用URL網址的參數來傳遞資料CookiesCookies是保留在使用者電腦的小檔案,檔案內容是一些執行時所需的使用者資訊9-1-2状态管理的种类-伺服端的状态管理伺服端的状态管理是将资料储存在伺服端的计算机,换句话说,状态管理的使用者状态信息会占用服务器的资源,常用的方法如下表所示:使用方法說明Session變數使用Session變數儲存使用者資料文字檔案使用伺服端的文字檔案來儲存使用者資料資料庫使用資料庫的記錄儲存使用者資料XML文件使用XML文件儲存使用者資料9-2PHP的表单处理与URL参数9-2-1网页表单的用途9-2-2HTML标签建立网页表单9-2-3$_POST与$_GET结合阵列变量9-2-4URL参数传递资料9-2-1网页表单的用途PHP程序是在伺服端执行,换句话说,客户端网页只负责取得使用者输入的资料,然后将输入资料送到伺服端进行处理,使用的是HTML网页表单,如下图所示:9-2-2HTML标签建立网页表单-标签在HTML标签关于网页表单的标签只有五个,如下表所示:表單標籤說明form…/formHTML表單標籤inputtype=…輸入或選擇資料的表單欄位,包含按鈕和文字方塊欄位,不同type屬性表示不同的欄位select…./select建立選單欄位,內含option標籤的選項option…./option選單欄位的選項textarea…./textarea文字區域欄位9-2-2HTML标签建立网页表单-架构formname=namemethod=post|getaction=URLenctype=MIMEinputtype=…textarea…./textareaselectoption…./option/selectinputtype=submit…/form9-2-2HTML标签建立网页表单-form标签的属性name属性:表单名称。method属性:设定资料送出方式,如下:formname=ordermethod=post/formaction属性:设定PHP表单处理程序所在的路径,也可以是URL网址,如下所示:formname=ordermethod=postaction=Ch9-3-2.php/formenctype属性:设定表单资料传送时的编码方式。9-2-3$_POST与$_GET结合阵列变量-说明PHP的表单处理是使用PHP的「预定变量」(PredefinedVariables)取得栏位资料,预定变量不同于使用者宣告的变量,属于PHP引擎建立的变量。PHP关于表单处理的预定变量是一种预设拥有全域变量范围的结合阵列变量,一共有2个,其说明如下表所示:預定變數說明$_POST結合陣列變數,儲存透過HTTPPOST方法傳入PHP程式檔案的表單欄位資料,鍵值是欄位名稱$_GET結合陣列變數,儲存透過HTTPGET方法傳入PHP程式檔案的表單欄位資料,鍵值是欄位名稱9-2-3$_REQUEST结合阵列变量-说明PHP4.0以上版本•$_REQUEST亦可取得栏位资料。9-2-3$_POST与$_GET结合阵列变量-范例例如:网页表单拥有名为Username的栏位,在PHP程序码可以使用上表的预定变量取得栏位值,如下所示:$name=$_POST[Username];$name=$_GET[Username];上述程序码可以取得结合阵列的元素值,即栏位输入的内容。9-2-3$_POST与$_GET结合阵列变量-使用PHP程序码到底是使用$_POST或$_GET变量,需视HTML表单form标签的method属性值而定,如下表所示:method屬性值PHP程式使用的結合陣列變數POST或post$_POSTGET或get$_GET9-2-4URL参数传递资料-a标签PHP除了可以使用本章后的表单来传递资料外,还可以使用超连结URL参数或是header()函数(详见第10章的说明)转址传送资料给其他PHP程序,如下所示:ahref=Ch9-2-4.php?Username=陈会安&Password=5678登入网站/aa标签的超连结传递Username和Password一共两个参数。9-2-4URL参数传递资料-取得参数值PHP程序取得超连结传递参数如同表单的get方法,可以使用$_GET阵列变量取得参数或栏位值,如下所示:$username=$_GET[Username];$pass=$_GET[Password];9-3文字与密码方块9-3-1文字与密码方块栏位9-3-2取得文字与密码方块栏位的内容9-3-1文字与密码方块栏位-语法文字和密码方块都可以输入一段文字内容,唯一的差别在于密码栏位输入的资料并不会显示出来,而是使用小圆点或「*」星号代替,其基本语法如下所示:inputtype=text|passwordname=Namemaxlength=valuereadonly=False|Truesize=Valuevalue=String9-3-1文字与密码方块栏位-属性语法的属性说明,如下表所示:屬性說明type屬性值text為文字方塊,password為密碼方塊name欄位名稱maxlength使用者允許輸入的最大字元個數,預設值0表示不限長度readonly欄位是否為唯讀,預設為False表示允許輸入,如為True表示唯讀,不能輸入資料size設定欄位顯示的寬度有多少個字元value設定欄位的預設值9-3-2取得文字与密码方块栏位的内容在建立好文字与密码方块的HTML表单后,我们就可以撰写PHP程序取得栏位内容。文字与密码栏位是直接将输入资料传到服务器,PHP程序只需使用$_POST结合阵列变量就可以取得栏位内容,如下所示:$username=$_POST[User];$password=$_POST[Pass];上述程序码的阵列键值是表单栏位的名称属性name,分别为:User文字方块和Pass密码方块的内容。9-4文字区域9-4-1文字区域栏位9-4-2取得文字区域栏位的内容9-4-1文字区域栏位-语法当需要输入整个段落或整篇文字时,我们就可以在表单使用文字区域栏位,其基本语法如下所示:textareaname=Namerows=valuecols=valuewrap=off|virtual|physicalvalue=String/textarea9-4-1文字区域栏位-属性语法的属性说明,如下表所示:屬性說明name欄位名稱rows欄位可以輸入幾列cols欄位的每列有幾個字wrap設定顯示和送出時的換行方式,off為不換行,virtual為自動換行,但輸出時仍然為一列,physical也是自動換行,不過輸出時同時也會換行value欄位的預設值9-4-2取得文字区域栏位的内容在建立文字区域栏位的HTML表单后,就可以撰写PHP程序取得栏位内容,如下所示:$msg=$_POST[Message];print意见:br.nl2br($msg).br;上述程序码取得名为Message文字区域的内容,因为HTML标签显示栏位内容时,并不会显示换行,所以呼叫nl2br()函数将换行符号\n替换成br换行标签。9-5核取方块9-5-1核取方块栏位9-5-2取得核取方块栏位的内容9-5-1核取方块栏位-语法表单栏位的核取方块如同一个开关,可以勾选或取消勾选来设定是否使用此功能,其基本语法如下所示:inputtype=checkboxname=Namecheckedvalue=String9-5-1核取方块栏位-属性语法的属性说明,如下表所示:屬性說明type屬性值checkbox為核取方塊name欄位名稱checked此屬性沒有參數值,加上屬性名稱表示預設勾選value勾選後表單送出的值,在送出表單時,如果是沒有勾選的核取方塊,這個值會被忽略掉9-5-2取得核取方块栏位的内容核取方块在表单扮演的角色是一个开关,PHP程序取得核取方块栏位内容是使用isset()检查栏位是否勾选,传回值是栏位的value属性值,如下所示:if(isset($_POST[ie]))print使用InternetExplorerbr;上述if条件检查ie核取方块是否被勾选,如果isset()传回true,就表示使用者勾选核取方块,每一个核取方块都可以使用相同方式进行检查。9-6下拉式清单方块9-6-1下拉式清单方块栏位9-6-2取得下拉式清单方块栏位的内容9-6-3取得清单方块栏位的内容9-6-1下拉式清单方块栏位-种类下拉式清单方块:当size属性值为1时只显示一个选项,需要按右边▼钮才能显示其他选项,如下图所示:清单方块:和下拉式清单方块一样,只不过显示的选项不只一个,size属性为显示的选项数,如果选项太多超过清单方块尺寸,视窗就会出现卷动轴帮助检视选项,如下图所示:9-6-1下拉式清单方块栏位-语法HTML的select标签需要配合option标签的选项,才能建立下拉式清单方块栏位,其基本语法,如下所示:selectname=Namemultiplesize=numberoptionvalue=Item_Name选项名称/optionoptionvalue=Item_Nameselected选项名称/option…../select9-6-1下拉式清单方块栏位-属性select标签的属性说明,如下表所示:option标签的属性说明,如下表所示:屬性說明name欄位名稱multiple設定是否為複選,如為複選一定是清單方塊size顯示選項數目,1為下拉式清單方塊,大於1為清單方塊屬性說明value選項值selected此屬性沒有屬性值,加上此屬性表示是預選選項9-6-2取得下拉式清单方块栏位的内容下拉式清单方块栏位会将option
本文标题:PHP的状态管理与表单处理
链接地址:https://www.777doc.com/doc-1060078 .html