PHP表單提交方法彙總

pcsh發表於2009-12-09

問題:網頁上提交表單之後,PHP為什麼不能獲取提交的內容?然而在老版本的PHP上執行卻正常。

  新版的PHP已經廢棄了原來的表單內容處理方式,即不再把提交的表單的內容直接複製到一個同名變數中。解決辦法有四個:

  1. 修改php.ini,查詢 register_globals,將其值修改為 On。這樣就可以像原來一樣,例如,提交的表單中包括一個名為"username"的變數,那麼在php中就可以直接使用$username來訪問該變數。但是,除非你要使用一段舊的程式碼而考慮到相容性問題,否則不建議使用該方法。

  2. 使用 $HTTP_GET_VARS、$HTTP_POST_VARS陣列來訪問,例如寫成$HTTP_POST_VARS["username"]的形式。不過該方法也不建議採用。

  3. (推薦)使用 $_POST、$_GET等陣列來訪問,例如寫成 $_POST["username"]的形式。建議採用這種方法。

  4. (推薦)使用 import_request_variables 函式。該函式將提交內容匯入到變數中。例如 import_request_variables("gp", "rvar_");第一個引數可以選擇g,p,c,分別表示匯入 GET,POST,COOKIE 變數;第二個引數為匯入後的變數字首。執行上面的語句後即可使用 $rvar_username 來訪問提交的 username 變數。使用import_request_variables("gp", "");可以相容以前的PHP程式。

  

PHP $_GET 和 $_POST變數是用來獲取表單中的資訊的,比如使用者輸入的資訊。

PHP表單操作

在我們處理HTML表單和PHP表單時,我們要記住的重要一點是:HTML頁面中的任何一個表單元素都可以自動的用於PHP指令碼:

表單舉例:



Name:
Age:


上述HTML頁面包含了兩個輸入框[input field]和一個提交[submit]按鈕。當使用者將資訊填寫完畢並點選提交按鈕時,表單的資料將被髮送至“welcome.php”檔案。

“welcome.php”檔案如下所示:


Welcome .

You are years old.

上述指令碼將輸出下面這段結果:

Welcome John.
You are 28 years old.

PHP $_GET 和 $_POST變數將在下面作具體講解。

表單有效性驗證[Form Validation]

使用者輸入的資訊應該儘可能的透過客戶端指令碼程式(如:JavaScript)瀏覽器上驗證;透過瀏覽器進行資訊的有效性驗證可以提高效率並減少伺服器的下載壓力。

如果使用者輸入的資訊需要存進資料庫,那麼你必須考慮在伺服器端進行有效性驗證。在伺服器上驗證資訊有效性的最好方法就是把表單資訊發給當前頁進行驗證,而不是調到其他頁面進行驗證。透過上述方法,如果表單存在錯誤,使用者可以直接在當前頁獲取錯誤資訊。這使得我們更容易發現存在的錯誤資訊。

PHP $_GET變數是透過get方法從表單中獲取“值”的。

$_GET變數

$_GET變數是一個包含名稱[name]和值[value]的陣列(這些名稱和值是透過HTTP GET方法傳送的,且都可以利用)。

$_GET變數使用“method=get”來獲取表單資訊。透過GET方法傳送的資訊是可見的(它將顯示在瀏覽器的位址列裡),並且它有長度限制(資訊的總長度不能超過100個字元[character])。

案例


Name:
Age:

當使用者點選“提交Submit”按鈕後,URL的方式顯示

“welcome.php”檔案可以使用“$_GET”變數來獲取表單資料(注意:表單欄[form field]內的名稱將會自動作為“$_GET”陣列中的ID關鍵詞):

Welcome .
You are years old!

為什麼要使用“$_GET”?

要點:當使用“$_GET”變數時,所有的變數名和變數值都會顯示在URL位址列內;所以,當你傳送的資訊包含密碼或是其他一些敏感資訊時,就不可以再使用這種方法。因為所有的資訊會在URL位址列內顯示,所以我們可以把它作為標籤放入收藏夾內。這在很多情況下非常有用。

注意:如果需要傳送的變數值過大,HTTP GET方法便不適用。傳送的資訊量不能超過100個字元。

$_REQUEST變數

PHP $_REQUEST變數包含$_GET, $_POST, and $_COOKIE的內容。

PHP $_REQUEST變數可以用來獲取透過“GET”和“POST”這兩種方法傳送的表單資料。

案例

Welcome .
You are years old!

PHP $_POST變數的作用是:獲取method = “post”方法傳送的表單變數。

$_POST變數

$_POST變數是一個包含名稱[name]何值[value]的陣列(這些名稱和值是透過HTTP POST方法傳送的,且都可以利用)

$_POST變數使用“method=POST”來獲取表單資訊。透過POST方法傳送的資訊是不可見的,並且它沒有關於資訊長度的限制。

案例


Enter your name:
Enter your age:

當使用者點選“提交Submit”按鈕後,URL中不會包含任何表單資料

“welcome.php”檔案可以使用“$_POST”變數來獲取表單資料(注意:表單欄[form field]內的名稱將會自動作為“$_POST”陣列中的ID關鍵詞):

Welcome .

You are years old!

為什麼要使用$_POST?

透過HTTP POST傳送的變數不會在URL中顯示出來

變數的大小沒有限制

然而,因為變數不能在URL中顯示出來,所以也不可能把這個頁面作為標籤儲存在收藏夾裡。

$_REQUEST變數

PHP $_REQUEST變數包含$_GET, $_POST, and $_COOKIE的內容

PHP $_REQUEST變數可以用來獲取透過“GET”和“POST”這兩種方法傳送的表單資料。

案例

Welcome .

You are years old!

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/wirror800/archive/2009/04/04/4048766.aspx

[@more@]PHP

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13442480/viewspace-1029506/,如需轉載,請註明出處,否則將追究法律責任。

相關文章