使用者互動和表單
對於許多我們感興趣的PHP應用來說,最基本的功能是實現與瀏覽這個頁面的使用者的互動。如果你 熟悉JavaScript,你可能會習慣於這麼一種交易處理 的模式,那就是對使用者的許多行動直接作出反應(例如將滑鼠移動到頁面上的一個串連)。而對於PHP這樣的伺服器端指令碼程式而言,它用來實現與使用者互動的活 動範圍要小得多,與使用者的互動僅僅發生在使用者向伺服器發出請求以及伺服器用一個動態網頁面作出回應之間。
使用者與PHP實現互動的關鍵是理解使用者對一個新Web頁面發出的請求中可能包含的發出資訊。我們將會看到,PHP使得這個工作極為簡單。
最簡單的方法是使用“URL查詢字串”在頁面請求中發出資訊。如果你曾經看到過一個在檔案名稱 後包含問號的URL,那就是採用的這種技術。讓我們來看一個 簡單的例子。建立一個標準的HTML檔案(不一定使用.php副檔名,在這個檔案中將不包含任何PHP代碼),並在其中加入以下串連:
這是指向一個叫welcome.php的檔案的串連,但是在串連這個檔案的同時,我們還在頁面 請求中傳遞了一個變數。這個變數是被作為“查詢字串”的一 部分傳遞的,它位於URL的問號後面。這個變數的名字是name,它的值是Kevin。也就是說,我們建立了一個串連,這個串連裝載 welcome.php並告知這個檔案中包含的PHP代碼:name等於Kevin。
要清楚這麼做對我們有什麼好處,我們需要看看welcome.php。同樣地將其作為一個新的 HTML檔案來建立,但是這一次要記得使用.php 副檔名,這會告訴Web伺服器在這個檔案中有一些PHP代碼需要解釋。如果你的Web伺服器還不接受.php作為PHP檔案的副檔名,你可能需要將其改名 為welcome.php3(在這種情況下,你也需要相應調整上面的代碼中的串連)。在這個新檔案中,輸入以下內容:
echo( "Welcome to our Web site, $name!" ); ?> |
現在,如果你用第一個檔案中串連去裝載第二個檔案,你會看到這一頁顯示“Welcome to our Web site, Kevin!”,這個通過URL的查詢字串傳遞過來的變數的值被自動地賦予了一個叫$name的變數,我們在一段文本中顯示了這個傳遞過來的變數。
如果你需要的話,你也可以通過查詢字串傳遞幾個變數。讓我們看看這個例子的稍微複雜一點的版本。將HTML檔案中的串連改變為:
這一次,我們傳遞了兩個變數:firstname和lastname。這些變數在查詢字串中被&符號分開。你可以傳遞更多的變數,只要你將每一個name=value對以&符號分開。
如前所述,我們可以在我們的welcome.php檔案中使用這兩個變數的值:
echo( "Welcome to our Web site, $firstname $lastname!" ); ?> |
雖然看上去一切都好了,但是我們仍沒有達到我們真正地與使用者互動的目的,我們的使用者應該能夠輸 入任意的資訊,並將它交給PHP來處理。接著我們的個人化歡 迎頁面的例子,我們想要讓我們的使用者任意地輸入他(或她)的名字並將其顯示到資訊中,要讓使用者輸入資料,我們需要用到HTML的表單。
這兒是表單的代碼:
除了在這裡你可以任意輸入你的名字以外,這個表單所起的效果和我們上面的第二個串連(在查詢字 符串中使用firstname=Kevin& lastname=Yank)完全一樣。當你按提交按鈕(標誌為“GO”)時,瀏覽器會裝載welcome.php並自動為你在查詢字串中添加變數和它 們的值。變數名就是在INPUT TYPE=TEXT標識中的NAME屬性,變數值就是使用者輸入的相應的內容。
INPUT TYPE=TEXT標識中的METHOD屬性是用來告訴瀏覽器如何在請求中發送變數名及變數值的。GET(就是我們在上面使用的)表示在查詢字串中傳遞 變數,但是還有另外一種選擇。將變數顯示在查詢字串中並不總是令我們滿意的--甚至有的時候在技術上就是不可行的。如果在你的表單中包含了一個 TEXTAREA標識用來讓使用者輸入大量的文本,這部分文本也顯示在查詢字串中實在是太長了,而且會超過瀏覽器所能支援的URL的最大長度。另外一種方 法可以允許瀏覽器隱藏地傳遞資訊。這種方法的代碼和我們上面看到的表單的代碼幾乎一樣,只是我們將表單的方法從GET變成了POST:
這個表單和我們之前的那個在功能上完全一樣。唯一的不同是當使用者在按“GO”按鈕時所裝載頁面 的URL將沒有一個查詢字串。一方面,這可以讓你通過表單 提交大量的資料或者是敏感的資料(例如密碼),而不在一個查詢字串中顯示出來。另一方面,如果使用者將提交表單產生的結果頁添加到收藏夾,這個收藏夾是沒 有用的,因為它不包含提交的資料。另外,附帶說一下,象AltaVista這樣的搜尋引擎總是利用查詢字串來提交查詢條件,其主要原因就是為了便於使用者 將查詢結果頁添加到收藏夾中,以便在將來進行同樣的搜尋,因為搜尋條件是包含在URL之中的。
這兒講了利用表單來實現使用者與PHP的互動的基本的原理。在以後的例子中,我們將討論一些更進階的問題和技術。