php頁面數(shù)據(jù)提交方式有g(shù)et和post兩種,區(qū)別為:1、get提交在url地址上可以看到參數(shù),post提交在地址欄上看不到參數(shù);2、get不安全,post安全;3、get提交是參數(shù)一個一個的提交,post提交是所有參數(shù)作為一個整體一起提交;4、get提交一般不超過255個字節(jié),post提交的大小取決于服務(wù)器;5、get很靈活,只要有頁面的跳轉(zhuǎn)就可以傳遞參數(shù),而post不靈活。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8版、DELL G3電腦
在php頁面中,提交數(shù)據(jù)的方式有兩種:get方式和post方式。
<form method="post" action=""></form> <form method="get" action=""></form>
get方式和post方式的區(qū)別
1、外觀上看
get提交在地址上可以看到參數(shù)
post提交在地址欄上看不到參數(shù)
2、安全性
get不安全,post安全
get提交的數(shù)據(jù)在url欄可以看見,而post提交的數(shù)據(jù)是不可見的,因此post更安全。
3、提交原理
get提交是參數(shù)一個一個的提交
post提交是所有參數(shù)作為一個整體一起提交
4、提交數(shù)據(jù)大小
get提交一般不超過255個字節(jié)
post提交的大小取決于服務(wù)器
// 在php.ini中,可以配置post提交的大小 post_max_size = 8M
5、靈活性
get很靈活,只要有頁面的跳轉(zhuǎn)就可以傳遞參數(shù)
post不靈活,post提交需要有表單的參與
1、 html跳轉(zhuǎn) <a href="index.php?name=tom&age=20">跳轉(zhuǎn)</a> 2、JS跳轉(zhuǎn) <script type="text/javascript"> location.href='index.php?name=tom&age=20'; location.assign('index.php?name=tom&age=20'); location.replace('index.php?name=tom&age=20'); </script> 3、PHP跳轉(zhuǎn) header('location:index.php?name=tom&age=22')
小結(jié):
GET | POST | |
---|---|---|
外觀上 | 在地址上看到傳遞的參數(shù)和值 | 地址欄上看不到數(shù)據(jù) |
提交數(shù)據(jù)大小 | 提交少量數(shù)據(jù),不同的瀏覽器最大值不一樣,IE是255個字符 | 提交大量數(shù)據(jù),可以通過更改php.ini配置文件來設(shè)置post提交數(shù)據(jù)的最大值 |
安全性 | 低 | 高 |
提交原理 | 提交的數(shù)據(jù)和數(shù)據(jù)之間在獨(dú)立的 | 將提交的數(shù)據(jù)變成XML格式提交 |
靈活性 | 很靈活,只要有頁面的跳轉(zhuǎn)就可以get傳遞數(shù)據(jù) | 不靈活 |
服務(wù)器數(shù)據(jù)的三種方式
$_POST:數(shù)組類型,保存的POST提交的值 $_GET:數(shù)組類型,保存的GET提交的值 $_REQUEST:數(shù)組類型,保存的GET和POST提交的值
根據(jù)提交表單數(shù)據(jù)的方式不同,獲取表單數(shù)據(jù)的方法也有所不同:get方式可以使用預(yù)定義變量$_GET
來獲??;post方式可以使用預(yù)定義變量$_POST
來獲??;如果不知道 form 表單通過哪種方式提交數(shù)據(jù),就可以使用預(yù)定義變量$_REQUEST
來獲取,它兩種方式的數(shù)據(jù)都可以獲取。
下面就來一一了解:
1、使用預(yù)定義變量$_GET快速獲取表單數(shù)據(jù)(form表單需要設(shè)置為method="get"
)
在程序的開發(fā)過程中,由于 GET 方法提交的數(shù)據(jù)是附加到 URL 上發(fā)送的,因此在 URL 的地址欄中將會顯示“URL+用戶傳遞的參數(shù)”類型的信息,如下所示:
http://url?name1=value1&name2=value2 ...
-
name1、name2 為表單元素的名稱(有表單元素的name屬性設(shè)置),value1、value2 為表單元素的值。url和表單元素之間用“
?
”隔開,而多個表單元素之間用“&
”隔開,每個表單元素的格式都是“name=value”,固定不變。
我們添加一下user.html文件的表單看看URL 的地址欄
user.php文件中可以直接使用預(yù)定義變量$_GET來
獲取數(shù)據(jù),$_GET 全局變量是一個關(guān)聯(lián)數(shù)組,數(shù)組的鍵名為表單元素 name 的值,數(shù)組的值為對應(yīng)表單的值。(注只要是 URL 中的參數(shù)都可以使用 $_GET 獲取。)
<?php var_dump($_GET); ?>
可以使用$_GET['鍵名']的方式來一一獲取每個表單元素的值:
<?php header("content-type:text/html;charset=utf-8"); echo "用戶名為:".$_GET['user']."<br>生日為:".$_GET['bday']; ?>
2、使用預(yù)定義變量$_POST快速獲取表單數(shù)據(jù)(form表單需要設(shè)置為method="post"
)
post方法不依賴于 URL,不會將傳遞的參數(shù)值顯示在地址欄中。
$_POST
全局變量也是一個關(guān)聯(lián)數(shù)組,數(shù)組的鍵名為表單元素 name 的值,數(shù)組的值為對應(yīng)表單的值。
<?php header("content-type:text/html;charset=utf-8"); echo "用戶名為:".$_POST['user']."<br>生日為:".$_POST['bday']; ?>
3、使用預(yù)定義變量$_REQUEST快速獲取表單數(shù)據(jù)
$_REQUEST 全局變量是一個包含了 $_POST、$_GET 和 $_COOKIE 的數(shù)組,數(shù)組結(jié)構(gòu)與 $_POST 和 $_GET 類似。
<?php header("content-type:text/html;charset=utf-8"); var_dump($_REQUEST); echo "用戶名為:".$_REQUEST['user']."<br>生日為:".$_REQUEST['bday']; ?>
小結(jié):
1、在開發(fā)的時候,如果明確是post提交就使用$_POST獲取,如果明確get提交就用$_GET獲取
2、request獲取效率低,盡可能不要使用,除非提交的類型不確定的情況下才使用。
推薦學(xué)習(xí):《PHP視頻教程》