PHP的超全局變量$ _GET和$ _POST用於收集表單數據。
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>
運行示例» 當用戶填寫表單上面並點擊提交按鈕,表單數據進行處理發送給名為PHP文件"welcome.php" 形式數據與HTTP POST方法發送。
要顯示提交的數據,你可以簡單地回應所有的變量。 該"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 [email protected]
同樣的結果也可以使用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>
上面的代碼非常簡單。 然而,最重要的是缺少。 你需要驗證表單數據,以保護您的腳本的惡意代碼。
處理PHP表單時認為安全性!
此頁面不包含任何形式的驗證,它只是顯示了如何發送和檢索表格數據。
然而,接下來的頁面將展示如何考慮處理PHP形式與安全! 表單數據的適當的驗證是非常重要的保護您的形式從黑客和垃圾郵件發送者!
GET與POST
GET和POST創建陣列(例如array( key => value, key2 => value2, key3 => value3, ...) 這個數組保存鍵/值對,其中鍵是表單控件的名稱和值是來自用戶的輸入數據。
GET和POST被視為$ _GET和$ _POST。 這些都是超全局變量,這意味著它們始終可以訪問,無論範圍 - 你可以從任何函數,類或文件的訪問,而不必做任何特殊。
$ _GET是通過URL參數傳遞給當前腳本的變量數組。
$ _POST是經由HTTP POST方法傳遞給當前腳本變量的陣列。
當使用GET?
從與GET方法的表單發送的信息的人都能看到 (所有的變量名和值在URL中顯示)。 GET也對信息量的限制發送。 該限制是大約2000個字符。 但是,因為變量顯示在URL中,有可能書籤頁面。 這可能是在某些情況下是有用的。
GET可用於發送非敏感數據。
Note: GET不應該被用來發送密碼或其他敏感信息!
當使用POST?
從與POST方法的形式發送的信息是不可見的, (all names/values are embedded within the body of the HTTP request) ,並具有上的信息的量沒有限制發送。
此外POST支持先進的功能,例如用於多部分二進制輸入支撐,同時將文件上傳到服務器。
但是,由於變量沒有在URL中顯示,這是不可能的書籤頁面。
開發人員喜歡POST發送表單數據。
接下來,讓我們看看我們如何能夠處理PHP形式的安全的方式!