PHP $_POST 變量
在上面的一節(jié)我們講了$_GET變量,那么這一節(jié)我們來學(xué)習(xí)一下$_POST 變量收集method="post" 的表單中的值。
$_POST 變量
預(yù)定義的 $_POST 變量用于收集來自 method="post" 的表單中的值。
從帶有 POST 方法的表單發(fā)送的信息,對任何人都是不可見的(不會顯示在瀏覽器的地址欄),并且對發(fā)送信息的量也沒有限制。
注釋:然而,默認(rèn)情況下,POST 方法的發(fā)送信息的量最大值為 8 MB(可通過設(shè)置 php.ini 文件中的 post_max_size 進行更改)。
?現(xià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é)果:
我們看到,我們用POST提交的信息,沒有在Url 欄中顯示,所以,你現(xiàn)在知道一點,POST 比GET 要更為安全一點
GET 與 POST 的區(qū)別:
get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。
get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到。post是通過HTTP post機制,將表單內(nèi)各個字段與其 ? ? ?內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
?get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。
建議:
1、get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數(shù)據(jù)提交方式;
2、在做數(shù)據(jù)查詢時,建議用Get方式;而在做數(shù)據(jù)添加、修改或刪除時,建議用Post方式;
PHP $_REQUEST 變量
預(yù)定義的 $_REQUEST 變量包含了 $_GET、$_POST 和 $_COOKIE 的內(nèi)容。
$_REQUEST 變量可用來收集通過 GET 和 POST 方法發(fā)送的表單數(shù)據(jù)。
你將上面的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接收