PHP 超全局變量 $_GET 和 $_POST 用於收集表單數據(form-data)。php
下面的例子顯示了一個簡單的 HTML 表單,它包含兩個輸入字段和一個提交按鈕:html
<html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form> </body> </html>
當用戶填寫此表單並點擊提交按鈕後,表單數據會發送到名爲 "welcome.php" 的 PHP 文件供處理。表單數據是經過 HTTP POST 方法發送的。數組
如需顯示出被提交的數據,您能夠簡單地輸出(echo)全部變量。"welcome.php" 文件是這樣的:安全
<html> <body> Welcome <?php echo $_POST["name"]; ?><br> Your email address is: <?php echo $_POST["email"]; ?> </body> </html>
輸出
Welcome John Your email address is john.doe@example.com
使用 HTTP GET 方法也能獲得相同的結果:
<html> <body> <form action="welcome_get.php" method="get"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form> </body> </html>
"welcome_get.php" 是這樣的:服務器
<html> <body> Welcome <?php echo $_GET["name"]; ?><br> Your email address is: <?php echo $_GET["email"]; ?> </body> </html>
GET 和 POST 都建立數組(例如,array( key => value, key2 => value2, key3 => value3, ...))。此數組包含鍵/值對,其中的鍵是表單控件的名稱,而值是來自用戶的輸入數據。函數
GET 和 POST 被視做 $_GET 和 $_POST。它們是超全局變量,這意味着對它們的訪問無需考慮做用域 - 無需任何特殊代碼,您可以從任何函數、類或文件訪問它們。post
$_GET 是經過 URL 參數傳遞到當前腳本的變量數組。orm
$_POST 是經過 HTTP POST 傳遞到當前腳本的變量數組。htm
經過 GET 方法從表單發送的信息對任何人都是可見的(全部變量名和值都顯示在 URL 中)。GET 對所發送信息的數量也有限制。限制在大於 2000 個字符。不過,因爲變量顯示在 URL 中,把頁面添加到書籤中也更爲方便。作用域
GET 可用於發送非敏感的數據。
註釋:毫不能使用 GET 來發送密碼或其餘敏感信息!
經過 POST 方法從表單發送的信息對其餘人是不可見的(全部名稱/值會被嵌入 HTTP 請求的主體中),而且對所發送信息的數量也無限制。
此外 POST 支持高階功能,好比在向服務器上傳文件時進行 multi-part 二進制輸入。
不過,因爲變量未顯示在 URL 中,也就沒法將頁面添加到書籤。
提示:開發者偏心 POST 來發送表單數據。
接下來讓咱們看看如何安全地處理 PHP 表單!