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