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