提到Web開發,就不得不提到HTML,它在若干年以來一直是Web使用者介面設計的事實標準。雖然現在WAP/XML等頁面腳本的使用使得 HTML作為一枝獨秀的情況難以維繫,但是如果要編寫前端PHP的Web應用,開發者仍然需要了解HTML語言,尤其是HTML的表單部分。
在本章,我們將學習以下內容:
? 使用Dreamweaver設計HTML表單
? 使用PHP發送與接收表單資料
? PHP表單多頁的傳值及處理
? 使用PHP驗證使用者輸入
? 在PHP中防止一些輕量級的攻擊
? PHP的兩種會話管理方式:COOKIE和SESSION
? 規劃我們的Web應用程式
5.1 表單與HTML
HTML是一種簡單的標記語言,為使用者提供了極大的靈活性,這一點使它很容易學習和編寫,也同樣是由於這一點,太多的網頁設計人員對HTML的設計與編碼幾乎為濫用,導致一個頁面在IE、Firefox、Mozila幾個不同瀏覽器中顯示得千差萬別。
現今的Web設計已經啟用新的標準,旨在使網頁的HTML只包含內容和訊息,以標準HTML和CSS(級聯樣式表)儲存資訊的方式,也就是現在流行的DIV+CSS設計標準。
有一些人建議使用XML來取代HTML語言。雖然XML有這樣那樣的強大功能,不過因為入門的門檻較高,讓人望而生畏,而且目前有太多的HTML型網站,因此目前沿行的標準是HTML與XML的兼容規格,叫做XHTML,用以從HTML過渡到XML。在本書中的程式碼都是基於XHTML相容性的,建議 你也將XHTML應用到Web專案中。建立和處理表單是PHP開發者的重要能力指標。下面我們開始介紹如何設計表單。
表單是Web應用中最常用的元件,由提交按鈕以及其他相關元素組成。表單被應用在各個領域中,用於實現註冊用戶、填寫銀行帳戶和登入等功能。
表單使用
作為開始標籤,以
結尾,否則將不起任何作用。在一個HTML頁面中允許有若干個表單,在編寫時以表單的名字(name)和Form ID作為它們之間的區分。
下面是最簡單的表單,程式碼如下:
這個表單在瀏覽器上只會顯示一個按鈕「提交查詢內容」字樣,沒有太多的意義。如果要提交資料並形成一個完整的表單,需要在
標籤增加兩個比較重要的屬性標籤:action和method,如以下表單所示:
其中,action標籤指的是接收處理結果的文件位置,當action值為空時,則提交給當前文件本身,如果action的值為其他文件或URL,則提交給該文件或URL地址處理。
method標籤是描述提交資料時使用的方法,它有兩種值:GET和POST,如果沒有設定method屬性或該屬性為空值,瀏覽器預設method的值為POST方法。
下面是處理POST表單的方法。
例5-1:getPasswd.php – 接受POST表單提交的值
$action = $_SERVER['PHP_SELF'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') echo '使用POST方法傳遞表單值';
echo "$_POST[email]";
}
?>
如果要在瀏覽器中傳送表單或資料給伺服器端,使用GET或POST方法都能實現。 GET方法是在存取URL時,使用瀏覽器網址列來傳遞值。我們可以在很多網站上看到這類URL串,圖5-1所示的就是使用GET方法傳遞參數。
圖5-1
GET方法方便直觀,缺點是訪問網站的使用者也可以修改URL串後發送給伺服器,如果程式處理得不夠好很容易出錯,而且GET傳遞的字串長度不能超過250個字符,如果超長,瀏覽器會自動截斷,導致資料缺失。另外,GET方法不支援ASCII字元以外的任何字符,例如包含漢字或其他非ASCII 字元時,需要使用額外的編碼操作,雖然有時候瀏覽器也能自動完成(可以使用url_encode和url_decode函數,使用方法詳見2.9.2 節)。
POST方法發送變數資料時,對於使用者來說是不透明的,按HTTP協定來說,資料附加於header的頭資訊中,使用者不能隨意修改,這對於Web應用程式而言,安全性要好得多,而且使用POST可以傳送大體積的資料給Web伺服器。
因為POST是隨HTTP的header資訊一起發送的,當觸發POST表單提交後,如果使用者瀏覽頁面時點擊「後退」按鈕,瀏覽器不會自動重發 POST資料。如果使用者此時點選「刷新」按鈕,將會有「資料已經過期,是否重新提交表單」的提示,這一點不如GET使用方便。使用GET傳值時,即便使用者 使用「後退」或「刷新」按鈕,瀏覽器的URL位址也是仍然存在的。
因此,我們在開發中需要根據實際應用靈活選擇GET和POST來提交表單資料。
值得一提的是,如果在HTML中缺少表單結束標記,那麼整個表單是不會觸發任何提交動作的。在實際開發時,一些粗心的人會發現單擊按鈕沒有任何反映,其實細心檢查一下表單的代碼就可以了,有時即使少寫了一個HTML字符,瀏覽器也不會替我們幹活的。
5.4 表單元素
表單所使用的標籤元素有十幾個,PHP開發中常用及較重要的標籤如表5-1所示。
表5-1
表單元素說 明
input type="checkbox"複選框,允許使用者選擇多個選擇項
input type="file"檔案瀏覽框,當檔案上傳時,可用於開啟一個模式視窗以選擇檔案
input type="hidden"隱藏標籤,用於在表單中以隱含方式提交變數值
input type="password"密碼文字框,使用者在該文字方塊輸入字元時將被替換顯示為*號碼
input type="radio"單選項,用於設定一組選擇項,使用者只能選擇一個
input type="reset"清除與重設表單內容,用於清除表單中所有文字方塊的內容,而且讓選擇選單項目恢復到初始值
input type="submit"表單提交按鈕
input type="text"單行文字方塊
select下拉列錶框,可單選和多重選取。預設為單選,如果增加多項選擇功能,增加