PHP $_POST 變數
在上面的一節我們講了$_GET變量,那麼這一節我們來學習一下$_POST 變數收集method="post" 的表單中的值。
$_POST 變數
預先定義的 $_POST 變數用於收集來自 method="post" 的表單中的值。
從帶有 POST 方法的表單發送的訊息,對任何人都是不可見的(不會顯示在瀏覽器的網址列),並且對發送訊息的量也沒有限制。
註解:然而,預設情況下,POST 方法的傳送訊息的量最大值為 8 MB(可透過設定 php.ini 檔案中的 post_max_size 進行變更)。
現在我們用範例來看吧
#範例
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <form action="php_post.php" method="post"> 名字: <input type="text" name="name"><br> 性别:<input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女<br> 年龄: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>
提交到 php_post.php 頁面
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 echo "你的姓名是:" .$_POST['name'] ."<br/>"; echo "你的性别是:" .$_POST['sex']."<br/>"; echo "你的年龄是:".$_POST['age']; ?>
#程式運行結果:
##我們看到,我們用POST提交的信息,沒有在Url 欄中顯示,所以,你現在知道一點,POST 比GET 要更為安全一點GET 與POST 的差異:
- #get是從伺服器上取得數據,post是傳送資料到伺服器。
get是把參數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。 post是透過HTTP post機制,將表單內各個欄位與其 內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL位址。用戶看不到這個過程。
- 對於get方式,伺服器端用Request.QueryString取得變數的值,對於post方式,伺服器端用Request.Form取得提交的資料。
- get傳送的資料量較小,且不能大於2KB。 post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
- get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
建議: 1、get方式的安全性較Post方式差些,包含機密資訊的話,建議用Post資料提交方式;
2、在做資料查詢時,建議用Get方式;而在做資料新增、修改或刪除時,建議用Post方式;
#
PHP $_REQUEST 變數
已定義的$_REQUEST 變數包含了$_GET、$_POST和$_COOKIE 的內容。
$_REQUEST 變數可用來收集透過 GET 和 POST 方法傳送的表單資料。
你將上面的php 檔案修改一下看看
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 echo "你的姓名是:" .$_REQUEST['name'] ."<br/>"; echo "你的性别是:" .$_REQUEST['sex']."<br/>"; echo "你的年龄是:".$_REQUEST['age']; ?>
你會發現不管是$_POST還是$_GET提交的,都能用 $_REQUEST接收