構建PHP互動網頁_第1頁
構建PHP互動網頁_第2頁
構建PHP互動網頁_第3頁
構建PHP互動網頁_第4頁
構建PHP互動網頁_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、提交表單數(shù)據(jù)后就可以在目標頁面接收用戶輸入的數(shù)據(jù)。接收表單可以使用$_POST、$_GET和$_REQUEST來完成。$_POST用于接收POST方法傳來的值,$_GET用于接收GET方法傳來的值,$_REQUEST可以取得包括POST、GET和Cookie在內的外部變量。表單中可以包含很多的控件,如文本框、單選按鈕、復選框、文件域、滾動文本框、按鈕等。接收表單數(shù)據(jù)即指獲取表單控件的value屬性的值。不同的控件可以設置不同的name屬性,在接收數(shù)據(jù)時根據(jù)name屬性確定是哪個控件的值。不同的控件設置value屬性的方式也不一樣。例如,單選按鈕可能由多個選項組成,這些選項的name屬性值都相同

2、時表示這些選項屬于同一個表單控件,每個選項都有一個value值,接收控件的值后可以根據(jù)這個value值判斷用戶選擇了哪個選項。又例如,復選框控件可以使用戶選擇多個選項,復選框中選項的name屬性值都設置為相同,并且設置為數(shù)組的形式,如“name=XQ”,而每個選項都有一個value值,接收數(shù)據(jù)時接收到的是一個數(shù)組,數(shù)組中保存了用戶選擇的選項,遍歷數(shù)組的值就可以確定用戶選擇了哪些選項。有些表單數(shù)據(jù)填寫時必須要符合一定的條件,例如,填寫出生日期時必須要符合日期的格式,填寫電話號碼時必須要填寫正確位數(shù)的數(shù)字。這時就需要通過驗證表單數(shù)據(jù)來判斷用戶所填寫數(shù)據(jù)的正確性。表單數(shù)據(jù)的驗證一般可以使用正則表達式

3、(見4.3節(jié))來完成。例如,一個簡單的驗證日期的正則表達式可以寫做“d4-(0?d|1?012)-(0?d|12d|301)$”。驗證E-mail格式的正則表達式可以寫做“a-zA-Z0-9_-+a-zA-Z0-9-+.a-zA-Z0-9-.+$”?!纠?.1】 制作一個學生信息表單,包含學生學號、姓名、性別、出生日期、所學專業(yè)、備注、興趣愛好等信息。要求學號必須為6位數(shù)字,出生日期必須符合日期格式,學號和姓名不允許為空。表單數(shù)據(jù)以GET方法提交到另一個頁面,在另一個頁面判斷表單數(shù)據(jù)的正確性并輸出。新建EX6_1_Hpage.php文件,輸入以下代碼。新建EX6_1_Ppage.php文件,輸

4、入以下代碼。運行EX6_1_Hpage.php文件,如圖6.1所示。在表單中輸入學生信息,然后單擊【提交】按鈕驗證輸入的信息。運行結果示例如圖6.2所示。 圖6.1 學生信息表單圖6.2 運行結果u6.2.1 獲取獲取URL參數(shù)的方法參數(shù)的方法URL通常的格式為:“url?參數(shù)1=值1&參數(shù)2=值2&參數(shù)3=值3”。在頁面中使用“$_GET參數(shù)”即可獲得具體參數(shù)的值,例如:單擊在PHP中可以使用parse_url()函數(shù)解析一個URL,并返回包含其相關內容的數(shù)組。語法格式如下:array parse_url(string $url)說明:$url為要解析的URL地址字符串。本函

5、數(shù)不是用于解析URL的合法性,不完整的URL也可接受。除了對于嚴重不合格的URL,該函數(shù)將返回FALSE并發(fā)出警告外,函數(shù)將返回一個關聯(lián)數(shù)組,包含URL中出現(xiàn)的各個組成部分。其組成部分為(至少有一個):scheme。如http。host。如。port。端口號。user。用戶名。pass。密碼。path。路徑。query。在問號“?”之后的內容。fragment。在散列符號#之后的內容。例如: http host = user = usernamepass = password path = /index.php query = arg=valuefragment = anchor )*/?在P

6、HP中對URL編碼使用urlencode()函數(shù),語法格式如下:string urlencode(string $str)說明:$str為要編碼的字符串,該函數(shù)返回一個編碼后的字符串。例如:URL編碼后需要使用urldecode()函數(shù)進行解碼,語法格式如下:string urldecode(string $str)該函數(shù)將對字符串$str中所有以百分號“%”開頭后跟2位十六進制數(shù)的3位字符串進行解碼,并返回解碼后的字符串。例如:u6.3.1 使用使用header()函數(shù)函數(shù)在4.4.6節(jié)曾介紹過header()函數(shù)的作用,其中一個作用就是頁面跳轉,只要在header()函數(shù)的參數(shù)中使用“Lo

7、cation: xxx”即可實現(xiàn)該功能。例如:最常用的跳轉頁面的方法是提交表單,將標記的action屬性設置為要跳轉到的頁面,提交表單后就跳轉到該頁面。例如:使用HTML的超鏈接標記也能夠實現(xiàn)跳轉頁面的功能,例如:?phpecho 單擊超鏈接;?使用按鈕也可以進行頁面跳轉,只需要在按鈕控件的onclick方法中設置執(zhí)行的代碼即可,例如:?phpecho ;?使用HTML實現(xiàn)頁面跳轉的另外一種方法是使用標記,實例代碼如下:說明:以上代碼的作用是5秒之后跳轉到index.php頁面。content屬性中數(shù)字5表示5s之后跳轉,設置為0則表示立即跳轉,url選項可以指定要跳轉到的頁面。如果要刷新本頁

8、面,則可以省略url選項,代碼如下:在PHP中還可以使用客戶端腳本實現(xiàn)頁面的跳轉,例如,在PHP中使用JavaScript跳轉到index.php頁面的代碼如下:?phpecho if(confirm(確認跳轉頁面?) ;echo window.location=index.php;/上面一句也可寫做echo location.href=index.php; ;?u6.4.1 會話的工作原理會話的工作原理PHP的會話也稱為Session。PHP在操作Session時,在用戶登錄或訪問一些初始頁面時服務器會為客戶端分配一個SessionID。SessionID是一個加密的隨機數(shù)字,在Sessio

9、n的生命周期中保存在客戶端。它可以保存在用戶機器的Cookie中,也可以通過URL在網絡中進行傳輸。用戶通過SessionID可以注冊一些特殊的變量,稱為會話變量,這些變量的數(shù)據(jù)保存在服務器端。在一次特定的網站連接中,如果客戶端可以通過Cookie或URL找到SessionID,那么服務器就可以根據(jù)客戶端傳來的SessionID訪問會話保存在服務器端的會話變量。Session的生命周期只在一次特定的網站連接中有效,當關閉瀏覽器后,Session會自動失效,之前注冊的會話變量也不能再使用。1. 初始化會話初始化會話在實現(xiàn)會話功能之前必須要初始化會話,初始化會話使用session_start()函

10、數(shù),語法格式如下:bool session_start(void)該函數(shù)將檢查SessionID是否存在,如果不存在則創(chuàng)建一個,并且能夠使用預定義數(shù)組$_SESSION進行訪問。如果啟動會話成功則函數(shù)返回TRUE,否則返回FALSE。會話啟動后就可以載入該會話已經注冊的會話變量以便使用。2. 注冊會話變量注冊會話變量自PHP 4.1以后,會話變量保存在預定義數(shù)組$_SESSION中,所以可以以直接定義數(shù)組單元的方式來定義一個會話變量,格式如下:$_SESSION鍵名=值;定義后該會話變量保存為$_SESSION數(shù)組的一個單元,例如:以上代碼運行后,定義的會話變量在$_SESSION數(shù)組中的鍵名

11、為“name”,值為“david”。會話變量定義后被記錄在服務器中,并對該變量的值進行跟蹤,直到會話結束或手動注銷該變量。在PHP 4.1以前,還可以使用session_register()函數(shù)來注冊會話變量,語法格式如下:bool session_register(mixed $name , mixed $. )3. 訪問會話變量訪問會話變量要在一個腳本中訪問會話變量,首先要使用session_start()函數(shù)啟動一個會話。之后就可以使用$_SESSION數(shù)組訪問該變量了。例如:4. 銷毀會話變量銷毀會話變量會話變量使用完后,刪除已經注冊的會話變量以減少對服務器資源的占用。刪除會話變量使用

12、unset()函數(shù),語法格式如下:void unset(mixed $var , mixed $var , $. )說明:$var是要銷毀的變量,可以銷毀一個或多個變量。例如:要一次銷毀所有的會話變量,可以使用以下語句:session_unset();5. 銷毀會話銷毀會話使用完一個會話后,要注銷所有的會話變量,然后再調用session_destroy()函數(shù)銷毀會話,語法格式如下:bool session_destroy ( void )該函數(shù)將刪除會話的所有數(shù)據(jù)并清除SessionID,關閉該會話。例如:【例6.2】 創(chuàng)建一個用戶登錄頁面,設定的用戶名和密碼分別為administrator

13、和123456。表單提交到本頁面,當用戶名和密碼輸入正確時,啟動Session,將用戶名和密碼值傳到用戶管理員頁面。如果不先登錄而訪問用戶管理員頁面則提示無權訪問。新建EX6_2_1.php文件,輸入以下代碼。新建EX6_2_2.php文件,輸入以下代碼:運行EX6_2_1.php文件,在頁面中輸入用戶名和密碼,如圖6.3所示。單擊【登錄】按鈕,結果如圖6.4所示。 圖6.3 用戶登錄界面 圖6.4 管理員界面值得注意的是,Cookie技術有很多局限性,例如:多人共用一臺計算機,Cookie數(shù)據(jù)容易泄露;一個站點存儲的Cookie信息有限;有些瀏覽器不支持Cookie;用戶可以通過設置瀏覽器選

14、項來禁用Cookie。正是由于以上Cookie的一些局限性,所以在進行會話管理時,SessionID通常會選擇Cookie和URL兩種方式來保存,而不是只保存在Cookie中。1. 創(chuàng)建創(chuàng)建Cookie在PHP中創(chuàng)建Cookie使用setcookie()函數(shù),語法格式如下: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過期的時間,這是一個UNIX時間戳,即從UNIX紀元開始的秒數(shù)。對于$expire的設置一般通過當前時間戳加上相應的秒數(shù)來決定。例如,time()+1200表示Cookie將在20分鐘后失效。如果不設置則Cookie將在瀏覽器關閉之后失效。$path。表示Cookie在服務器上的有效路徑。默認值為設定Cookie的當前目錄。$domain。表示Cookie在服務器上的有效域名。例如,要使Cookie能在域名下的所有子域都有效,該參數(shù)應設為。$secure。表示Cookie是否僅允許通過安全的HTTPS協(xié)議傳

16、輸。取值為1或0,當設成1時Cookie僅允許通過HTTPS傳輸,設成0表示允許通過普通HTTP協(xié)議傳輸。默認值為0。例如:2. 訪問訪問Cookie通過setcookie()函數(shù)創(chuàng)建的Cookie是作為數(shù)組的單元,存放在預定義變量$_COOKIE中的。也就是說,直接對$_COOKIE數(shù)組單元進行賦值也可以創(chuàng)建Cookie。但$_COOKIE數(shù)組創(chuàng)建的Cookie在會話結束后就會失效。例如: 王林 number = 081101 )?訪問Cookie的方法與Session類似,例如:3. 刪除刪除CookieCookie在創(chuàng)建時指定了一個過期時間,如果到了過期時間,Cookie將自動被刪除。在

17、PHP中沒有專門的刪除Cookie的函數(shù)。如果為了安全方面的考慮,在Cookie過期之前就想刪除Cookie,可以使用setcookie()函數(shù)或$_COOKIE數(shù)組將已知Cookie的值設為空。例如: )?【例6.3】 制作一個登錄表單,將表單的值保存在Cookie中,并可以選擇Cookie的有效時間。新建EX6_3_1.php文件,輸入以下代碼。新建EX6_3_2.php文件,輸入以下代碼:運行EX6_3_1.php文件,輸入用戶名administrator,密碼123456,Cookie選擇保存1天,如圖6.5所示。單擊【登錄】按鈕,結果如圖6.6所示。 圖6.5 管理員登錄,保存Coo

18、kie圖6.6 管理員頁面【例6.4】 制作一個智能問答系統(tǒng),系統(tǒng)根據(jù)存儲于文本文件中的用戶信息判斷用戶是否是合法登錄。用戶登錄后可以進行智力問答,回答完后系統(tǒng)會計算其所得分數(shù)。在Practice文件夾下新建一個EX6_4_info.txt文本文件,在其中保存用戶的信息,有用戶名、密碼兩個信息,中間用“|”隔開,如輸入如下幾行數(shù)據(jù):user1|123456user2|654321user3|111111新建EX6_4_login.php文件(登錄頁面),輸入以下代碼:用戶名密碼新建EX6_4_main.php文件(主頁面),輸入以下代碼。新建EX6_4_QA.php文件(答題頁面),輸入以下代碼。運行EX6_4_login.php文件,輸入用戶名user1,密碼123456,如圖6.7所示,單擊【登錄】按鈕,進入主頁面,如圖6.8所示。 圖6.7 用戶登錄界面 圖6.8 主頁面單擊【開始答題】按鈕,進入答題頁面,如圖6.9所示。圖6.9 答題頁面在答題頁面上進行答題,答完后單擊【提交】按鈕,系統(tǒng)會計算所得分數(shù),如圖6.10所示。單擊【確定】按鈕后會彈出“繼續(xù)答題”確認對話框,如圖6.11所示。單擊【確定】按鈕則繼續(xù)答題,單擊【取消】按鈕則返回主頁面,在主頁面中會有相應提示,如圖6.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論