




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、提交表單數(shù)據(jù)后就可以在目標(biāo)頁(yè)面接收用戶輸入的數(shù)據(jù)。接收表單可以使用$_POST、$_GET和$_REQUEST來(lái)完成。$_POST用于接收POST方法傳來(lái)的值,$_GET用于接收GET方法傳來(lái)的值,$_REQUEST可以取得包括POST、GET和Cookie在內(nèi)的外部變量。表單中可以包含很多的控件,如文本框、單選按鈕、復(fù)選框、文件域、滾動(dòng)文本框、按鈕等。接收表單數(shù)據(jù)即指獲取表單控件的value屬性的值。不同的控件可以設(shè)置不同的name屬性,在接收數(shù)據(jù)時(shí)根據(jù)name屬性確定是哪個(gè)控件的值。不同的控件設(shè)置value屬性的方式也不一樣。例如,單選按鈕可能由多個(gè)選項(xiàng)組成,這些選項(xiàng)的name屬性值都相同
2、時(shí)表示這些選項(xiàng)屬于同一個(gè)表單控件,每個(gè)選項(xiàng)都有一個(gè)value值,接收控件的值后可以根據(jù)這個(gè)value值判斷用戶選擇了哪個(gè)選項(xiàng)。又例如,復(fù)選框控件可以使用戶選擇多個(gè)選項(xiàng),復(fù)選框中選項(xiàng)的name屬性值都設(shè)置為相同,并且設(shè)置為數(shù)組的形式,如“name=XQ”,而每個(gè)選項(xiàng)都有一個(gè)value值,接收數(shù)據(jù)時(shí)接收到的是一個(gè)數(shù)組,數(shù)組中保存了用戶選擇的選項(xiàng),遍歷數(shù)組的值就可以確定用戶選擇了哪些選項(xiàng)。有些表單數(shù)據(jù)填寫(xiě)時(shí)必須要符合一定的條件,例如,填寫(xiě)出生日期時(shí)必須要符合日期的格式,填寫(xiě)電話號(hào)碼時(shí)必須要填寫(xiě)正確位數(shù)的數(shù)字。這時(shí)就需要通過(guò)驗(yàn)證表單數(shù)據(jù)來(lái)判斷用戶所填寫(xiě)數(shù)據(jù)的正確性。表單數(shù)據(jù)的驗(yàn)證一般可以使用正則表達(dá)式
3、(見(jiàn)4.3節(jié))來(lái)完成。例如,一個(gè)簡(jiǎn)單的驗(yàn)證日期的正則表達(dá)式可以寫(xiě)做“d4-(0?d|1?012)-(0?d|12d|301)$”。驗(yàn)證E-mail格式的正則表達(dá)式可以寫(xiě)做“a-zA-Z0-9_-+a-zA-Z0-9-+.a-zA-Z0-9-.+$”?!纠?.1】 制作一個(gè)學(xué)生信息表單,包含學(xué)生學(xué)號(hào)、姓名、性別、出生日期、所學(xué)專(zhuān)業(yè)、備注、興趣愛(ài)好等信息。要求學(xué)號(hào)必須為6位數(shù)字,出生日期必須符合日期格式,學(xué)號(hào)和姓名不允許為空。表單數(shù)據(jù)以GET方法提交到另一個(gè)頁(yè)面,在另一個(gè)頁(yè)面判斷表單數(shù)據(jù)的正確性并輸出。新建EX6_1_Hpage.php文件,輸入以下代碼。新建EX6_1_Ppage.php文件,輸
4、入以下代碼。運(yùn)行EX6_1_Hpage.php文件,如圖6.1所示。在表單中輸入學(xué)生信息,然后單擊【提交】按鈕驗(yàn)證輸入的信息。運(yùn)行結(jié)果示例如圖6.2所示。 圖6.1 學(xué)生信息表單圖6.2 運(yùn)行結(jié)果u6.2.1 獲取獲取URL參數(shù)的方法參數(shù)的方法URL通常的格式為:“url?參數(shù)1=值1&參數(shù)2=值2&參數(shù)3=值3”。在頁(yè)面中使用“$_GET參數(shù)”即可獲得具體參數(shù)的值,例如:?jiǎn)螕粼赑HP中可以使用parse_url()函數(shù)解析一個(gè)URL,并返回包含其相關(guān)內(nèi)容的數(shù)組。語(yǔ)法格式如下:array parse_url(string $url)說(shuō)明:$url為要解析的URL地址字符串。本函
5、數(shù)不是用于解析URL的合法性,不完整的URL也可接受。除了對(duì)于嚴(yán)重不合格的URL,該函數(shù)將返回FALSE并發(fā)出警告外,函數(shù)將返回一個(gè)關(guān)聯(lián)數(shù)組,包含URL中出現(xiàn)的各個(gè)組成部分。其組成部分為(至少有一個(gè)):scheme。如http。host。如。port。端口號(hào)。user。用戶名。pass。密碼。path。路徑。query。在問(wèn)號(hào)“?”之后的內(nèi)容。fragment。在散列符號(hào)#之后的內(nèi)容。例如: http host = user = usernamepass = password path = /index.php query = arg=valuefragment = anchor )*/?在P
6、HP中對(duì)URL編碼使用urlencode()函數(shù),語(yǔ)法格式如下:string urlencode(string $str)說(shuō)明:$str為要編碼的字符串,該函數(shù)返回一個(gè)編碼后的字符串。例如:URL編碼后需要使用urldecode()函數(shù)進(jìn)行解碼,語(yǔ)法格式如下:string urldecode(string $str)該函數(shù)將對(duì)字符串$str中所有以百分號(hào)“%”開(kāi)頭后跟2位十六進(jìn)制數(shù)的3位字符串進(jìn)行解碼,并返回解碼后的字符串。例如:u6.3.1 使用使用header()函數(shù)函數(shù)在4.4.6節(jié)曾介紹過(guò)header()函數(shù)的作用,其中一個(gè)作用就是頁(yè)面跳轉(zhuǎn),只要在header()函數(shù)的參數(shù)中使用“Lo
7、cation: xxx”即可實(shí)現(xiàn)該功能。例如:最常用的跳轉(zhuǎn)頁(yè)面的方法是提交表單,將標(biāo)記的action屬性設(shè)置為要跳轉(zhuǎn)到的頁(yè)面,提交表單后就跳轉(zhuǎn)到該頁(yè)面。例如:使用HTML的超鏈接標(biāo)記也能夠?qū)崿F(xiàn)跳轉(zhuǎn)頁(yè)面的功能,例如:?phpecho 單擊超鏈接;?使用按鈕也可以進(jìn)行頁(yè)面跳轉(zhuǎn),只需要在按鈕控件的onclick方法中設(shè)置執(zhí)行的代碼即可,例如:?phpecho ;?使用HTML實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的另外一種方法是使用標(biāo)記,實(shí)例代碼如下:說(shuō)明:以上代碼的作用是5秒之后跳轉(zhuǎn)到index.php頁(yè)面。content屬性中數(shù)字5表示5s之后跳轉(zhuǎn),設(shè)置為0則表示立即跳轉(zhuǎn),url選項(xiàng)可以指定要跳轉(zhuǎn)到的頁(yè)面。如果要刷新本頁(yè)
8、面,則可以省略u(píng)rl選項(xiàng),代碼如下:在PHP中還可以使用客戶端腳本實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn),例如,在PHP中使用JavaScript跳轉(zhuǎn)到index.php頁(yè)面的代碼如下:?phpecho if(confirm(確認(rèn)跳轉(zhuǎn)頁(yè)面?) ;echo window.location=index.php;/上面一句也可寫(xiě)做echo location.href=index.php; ;?u6.4.1 會(huì)話的工作原理會(huì)話的工作原理PHP的會(huì)話也稱(chēng)為Session。PHP在操作Session時(shí),在用戶登錄或訪問(wèn)一些初始頁(yè)面時(shí)服務(wù)器會(huì)為客戶端分配一個(gè)SessionID。SessionID是一個(gè)加密的隨機(jī)數(shù)字,在Sessio
9、n的生命周期中保存在客戶端。它可以保存在用戶機(jī)器的Cookie中,也可以通過(guò)URL在網(wǎng)絡(luò)中進(jìn)行傳輸。用戶通過(guò)SessionID可以注冊(cè)一些特殊的變量,稱(chēng)為會(huì)話變量,這些變量的數(shù)據(jù)保存在服務(wù)器端。在一次特定的網(wǎng)站連接中,如果客戶端可以通過(guò)Cookie或URL找到SessionID,那么服務(wù)器就可以根據(jù)客戶端傳來(lái)的SessionID訪問(wèn)會(huì)話保存在服務(wù)器端的會(huì)話變量。Session的生命周期只在一次特定的網(wǎng)站連接中有效,當(dāng)關(guān)閉瀏覽器后,Session會(huì)自動(dòng)失效,之前注冊(cè)的會(huì)話變量也不能再使用。1. 初始化會(huì)話初始化會(huì)話在實(shí)現(xiàn)會(huì)話功能之前必須要初始化會(huì)話,初始化會(huì)話使用session_start()函
10、數(shù),語(yǔ)法格式如下:bool session_start(void)該函數(shù)將檢查SessionID是否存在,如果不存在則創(chuàng)建一個(gè),并且能夠使用預(yù)定義數(shù)組$_SESSION進(jìn)行訪問(wèn)。如果啟動(dòng)會(huì)話成功則函數(shù)返回TRUE,否則返回FALSE。會(huì)話啟動(dòng)后就可以載入該會(huì)話已經(jīng)注冊(cè)的會(huì)話變量以便使用。2. 注冊(cè)會(huì)話變量注冊(cè)會(huì)話變量自PHP 4.1以后,會(huì)話變量保存在預(yù)定義數(shù)組$_SESSION中,所以可以以直接定義數(shù)組單元的方式來(lái)定義一個(gè)會(huì)話變量,格式如下:$_SESSION鍵名=值;定義后該會(huì)話變量保存為$_SESSION數(shù)組的一個(gè)單元,例如:以上代碼運(yùn)行后,定義的會(huì)話變量在$_SESSION數(shù)組中的鍵名
11、為“name”,值為“david”。會(huì)話變量定義后被記錄在服務(wù)器中,并對(duì)該變量的值進(jìn)行跟蹤,直到會(huì)話結(jié)束或手動(dòng)注銷(xiāo)該變量。在PHP 4.1以前,還可以使用session_register()函數(shù)來(lái)注冊(cè)會(huì)話變量,語(yǔ)法格式如下:bool session_register(mixed $name , mixed $. )3. 訪問(wèn)會(huì)話變量訪問(wèn)會(huì)話變量要在一個(gè)腳本中訪問(wèn)會(huì)話變量,首先要使用session_start()函數(shù)啟動(dòng)一個(gè)會(huì)話。之后就可以使用$_SESSION數(shù)組訪問(wèn)該變量了。例如:4. 銷(xiāo)毀會(huì)話變量銷(xiāo)毀會(huì)話變量會(huì)話變量使用完后,刪除已經(jīng)注冊(cè)的會(huì)話變量以減少對(duì)服務(wù)器資源的占用。刪除會(huì)話變量使用
12、unset()函數(shù),語(yǔ)法格式如下:void unset(mixed $var , mixed $var , $. )說(shuō)明:$var是要銷(xiāo)毀的變量,可以銷(xiāo)毀一個(gè)或多個(gè)變量。例如:要一次銷(xiāo)毀所有的會(huì)話變量,可以使用以下語(yǔ)句:session_unset();5. 銷(xiāo)毀會(huì)話銷(xiāo)毀會(huì)話使用完一個(gè)會(huì)話后,要注銷(xiāo)所有的會(huì)話變量,然后再調(diào)用session_destroy()函數(shù)銷(xiāo)毀會(huì)話,語(yǔ)法格式如下:bool session_destroy ( void )該函數(shù)將刪除會(huì)話的所有數(shù)據(jù)并清除SessionID,關(guān)閉該會(huì)話。例如:【例6.2】 創(chuàng)建一個(gè)用戶登錄頁(yè)面,設(shè)定的用戶名和密碼分別為administrator
13、和123456。表單提交到本頁(yè)面,當(dāng)用戶名和密碼輸入正確時(shí),啟動(dòng)Session,將用戶名和密碼值傳到用戶管理員頁(yè)面。如果不先登錄而訪問(wèn)用戶管理員頁(yè)面則提示無(wú)權(quán)訪問(wèn)。新建EX6_2_1.php文件,輸入以下代碼。新建EX6_2_2.php文件,輸入以下代碼:運(yùn)行EX6_2_1.php文件,在頁(yè)面中輸入用戶名和密碼,如圖6.3所示。單擊【登錄】按鈕,結(jié)果如圖6.4所示。 圖6.3 用戶登錄界面 圖6.4 管理員界面值得注意的是,Cookie技術(shù)有很多局限性,例如:多人共用一臺(tái)計(jì)算機(jī),Cookie數(shù)據(jù)容易泄露;一個(gè)站點(diǎn)存儲(chǔ)的Cookie信息有限;有些瀏覽器不支持Cookie;用戶可以通過(guò)設(shè)置瀏覽器選
14、項(xiàng)來(lái)禁用Cookie。正是由于以上Cookie的一些局限性,所以在進(jìn)行會(huì)話管理時(shí),SessionID通常會(huì)選擇Cookie和URL兩種方式來(lái)保存,而不是只保存在Cookie中。1. 創(chuàng)建創(chuàng)建Cookie在PHP中創(chuàng)建Cookie使用setcookie()函數(shù),語(yǔ)法格式如下:bool setcookie(string $name , string $value , int $expire , string $path , string $domain , bool $secure , bool $httponly )本函數(shù)的參數(shù)如下:$name。表示Cookie的名字。$value。表示Cook
15、ie的值,該值保存在客戶端,所以不要保存比較敏感的數(shù)據(jù)。$expire。表示Cookie過(guò)期的時(shí)間,這是一個(gè)UNIX時(shí)間戳,即從UNIX紀(jì)元開(kāi)始的秒數(shù)。對(duì)于$expire的設(shè)置一般通過(guò)當(dāng)前時(shí)間戳加上相應(yīng)的秒數(shù)來(lái)決定。例如,time()+1200表示Cookie將在20分鐘后失效。如果不設(shè)置則Cookie將在瀏覽器關(guān)閉之后失效。$path。表示Cookie在服務(wù)器上的有效路徑。默認(rèn)值為設(shè)定Cookie的當(dāng)前目錄。$domain。表示Cookie在服務(wù)器上的有效域名。例如,要使Cookie能在域名下的所有子域都有效,該參數(shù)應(yīng)設(shè)為。$secure。表示Cookie是否僅允許通過(guò)安全的HTTPS協(xié)議傳
16、輸。取值為1或0,當(dāng)設(shè)成1時(shí)Cookie僅允許通過(guò)HTTPS傳輸,設(shè)成0表示允許通過(guò)普通HTTP協(xié)議傳輸。默認(rèn)值為0。例如:2. 訪問(wèn)訪問(wèn)Cookie通過(guò)setcookie()函數(shù)創(chuàng)建的Cookie是作為數(shù)組的單元,存放在預(yù)定義變量$_COOKIE中的。也就是說(shuō),直接對(duì)$_COOKIE數(shù)組單元進(jìn)行賦值也可以創(chuàng)建Cookie。但$_COOKIE數(shù)組創(chuàng)建的Cookie在會(huì)話結(jié)束后就會(huì)失效。例如: 王林 number = 081101 )?訪問(wèn)Cookie的方法與Session類(lèi)似,例如:3. 刪除刪除CookieCookie在創(chuàng)建時(shí)指定了一個(gè)過(guò)期時(shí)間,如果到了過(guò)期時(shí)間,Cookie將自動(dòng)被刪除。在
17、PHP中沒(méi)有專(zhuān)門(mén)的刪除Cookie的函數(shù)。如果為了安全方面的考慮,在Cookie過(guò)期之前就想刪除Cookie,可以使用setcookie()函數(shù)或$_COOKIE數(shù)組將已知Cookie的值設(shè)為空。例如: )?【例6.3】 制作一個(gè)登錄表單,將表單的值保存在Cookie中,并可以選擇Cookie的有效時(shí)間。新建EX6_3_1.php文件,輸入以下代碼。新建EX6_3_2.php文件,輸入以下代碼:運(yùn)行EX6_3_1.php文件,輸入用戶名administrator,密碼123456,Cookie選擇保存1天,如圖6.5所示。單擊【登錄】按鈕,結(jié)果如圖6.6所示。 圖6.5 管理員登錄,保存Coo
18、kie圖6.6 管理員頁(yè)面【例6.4】 制作一個(gè)智能問(wèn)答系統(tǒng),系統(tǒng)根據(jù)存儲(chǔ)于文本文件中的用戶信息判斷用戶是否是合法登錄。用戶登錄后可以進(jìn)行智力問(wèn)答,回答完后系統(tǒng)會(huì)計(jì)算其所得分?jǐn)?shù)。在Practice文件夾下新建一個(gè)EX6_4_info.txt文本文件,在其中保存用戶的信息,有用戶名、密碼兩個(gè)信息,中間用“|”隔開(kāi),如輸入如下幾行數(shù)據(jù):user1|123456user2|654321user3|111111新建EX6_4_login.php文件(登錄頁(yè)面),輸入以下代碼:用戶名密碼新建EX6_4_main.php文件(主頁(yè)面),輸入以下代碼。新建EX6_4_QA.php文件(答題頁(yè)面),輸入以下代碼。運(yùn)行EX6_4_login.php文件,輸入用戶名user1,密碼123456,如圖6.7所示,單擊【登錄】按鈕,進(jìn)入主頁(yè)面,如圖6.8所示。 圖6.7 用戶登錄界面 圖6.8 主頁(yè)面單擊【開(kāi)始答題】按鈕,進(jìn)入答題頁(yè)面,如圖6.9所示。圖6.9 答題頁(yè)面在答題頁(yè)面上進(jìn)行答題,答完后單擊【提交】按鈕,系統(tǒng)會(huì)計(jì)算所得分?jǐn)?shù),如圖6.10所示。單擊【確定】按鈕后會(huì)彈出“繼續(xù)答題”確認(rèn)對(duì)話框,如圖6.11所示。單擊【確定】按鈕則繼續(xù)答題,單擊【取消】按鈕則返回主頁(yè)面,在主頁(yè)面中會(huì)有相應(yīng)提示,如圖6.1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省遂寧市高中2025年高三下學(xué)期聯(lián)合考試化學(xué)試題含解析
- 回憶齊白石先生
- 河北省邢臺(tái)八中2025屆高三第二次聯(lián)考化學(xué)試卷含解析
- 慢性心力衰竭護(hù)理常規(guī)
- 護(hù)理發(fā)展史講座
- 浙江省杭州市江南實(shí)驗(yàn)學(xué)校2025屆高三下學(xué)期第六次檢測(cè)化學(xué)試卷含解析
- 統(tǒng)編版六年級(jí)語(yǔ)文第一單元過(guò)關(guān)檢測(cè)密卷(含答案)
- 期中評(píng)估檢測(cè)題( B 卷)(1-4單元測(cè)試)無(wú)答案六年級(jí)下冊(cè)數(shù)學(xué)冀教版
- 2024-2025學(xué)年度河南省信陽(yáng)市光山縣第二高級(jí)中學(xué)高一第二學(xué)期第一次月考?xì)v史試卷(含答案)
- 2025年太陽(yáng)能空調(diào)系統(tǒng)項(xiàng)目建議書(shū)
- 精神科出科考試試題及答案
- ABAQUS粘聚力模型(CohesiveModel)應(yīng)用小結(jié)
- DB44∕T 336-2006 鋸緣青蟹養(yǎng)殖技術(shù)規(guī)范 人工繁殖技術(shù)
- DB13(J) 185-2020 居住建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)(節(jié)能75%)(2021年版)
- 房屋建筑和市政基礎(chǔ)設(shè)施項(xiàng)目基本情況承諾(樣表)
- 供應(yīng)商產(chǎn)品及過(guò)程變更控制程序
- 《2022年上海市初中語(yǔ)文課程終結(jié)性評(píng)價(jià)指南》中規(guī)定的150個(gè)文言實(shí)詞
- 《鐵道概論鐵路車(chē)站》PPT課件
- TI-BQ40Z50-軟件(課堂PPT)
- 《禮儀培訓(xùn)》PPT課件
- 平面塊料拆除施工方案完整
評(píng)論
0/150
提交評(píng)論