問題:網頁上提交表單之後,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"]的形式。建議采用這種方法。
(推薦)使用 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腳本:
表單舉例:
<html> <body><form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form></body> </html>
上述HTML頁面包含了兩個輸入框[input field]和一個提交[submit]按鈕。當用戶將信息填寫完畢並點擊提交按鈕時,表單的數據將被發送至“welcome.php”文件。
“welcome.php”文件如下所示:
<html> <body>Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old.</body> </html>
上述腳本將輸出下面這段結果:
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])。
案例
<form action="welcome.php" method="get"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form>
當用戶點擊“提交Submit”按鈕後,URL的方式顯示
“welcome.php”文件可以使用“$_GET”變量來獲取表單數據(注意:表單欄[form field]內的名稱將會自動作為“$_GET”數組中的ID關鍵詞):
Welcome <?php echo $_GET["name"]; ?>.<br />You are <?php echo $_GET["age"]; ?> years old!
為什麼要使用“$_GET”?
要點:當使用“$_GET”變量時,所有的變量名和變量值都會顯示在URL地址欄內;所以,當你發送的信息包含密碼或是其他一些敏感信息時,就不可以再使用這種方法。因為所有的信息會在URL地址欄內顯示,所以我們可以把它作為標簽放入收藏夾內。這在很多情況下非常有用。
注意:如果需要發送的變量值過大,HTTP GET方法便不適用。發送的信息量不能超過100個字符。
$_REQUEST變量
PHP $_REQUEST變量包含$_GET, $_POST, and $_COOKIE的內容。
PHP $_REQUEST變量可以用來獲取通過“GET”和“POST”這兩種方法發送的表單數據。
案例
Welcome <?php echo $_REQUEST["name"]; ?>.<br />You are <?php echo $_REQUEST["age"]; ?> years old!
PHP $_POST變量的作用是:獲取method = “post”方法發送的表單變量。
$_POST變量
$_POST變量是一個包含名稱[name]何值[value]的數組(這些名稱和值是通過HTTP POST方法發送的,且都可以利用)
$_POST變量使用“method=POST”來獲取表單信息。通過POST方法發送的信息是不可見的,並且它沒有關於信息長度的限制。
案例
<form action="welcome.php" method="post"> Enter your name: <input type="text" name="name" /> Enter your age: <input type="text" name="age" /> <input type="submit" /> </form>
當用戶點擊“提交Submit”按鈕後,URL中不會包含任何表單數據
“welcome.php”文件可以使用“$_POST”變量來獲取表單數據(注意:表單欄[form field]內的名稱將會自動作為“$_POST”數組中的ID關鍵詞):
Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old!
為什麼要使用$_POST?
通過HTTP POST發送的變量不會在URL中顯示出來
變量的大小沒有限制
然而,因為變量不能在URL中顯示出來,所以也不可能把這個頁面作為標簽儲存在收藏夾裡。
$_REQUEST變量
PHP $_REQUEST變量包含$_GET, $_POST, and $_COOKIE的內容
PHP $_REQUEST變量可以用來獲取通過“GET”和“POST”這兩種方法發送的表單數據。
案例
Welcome <?php echo $_REQUEST["name"]; ?>.<br /> You are <?php echo $_REQUEST["age"]; ?> years old!
以上這篇提交表單後 PHP獲取提交內容的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持幫客之家。