PHP-表單提交數據的兩種方式
- 2020 年 3 月 26 日
- 筆記
1.3 表單提交數據的兩種方式
1.3.1 兩種方式
1、get
2、post
<form method="post" action=""></form> <form method="get" action=""></form>
1.3.2 區別
1、外觀上看
get提交在地址上可以看到參數

post提交在地址欄上看不到參數

2、安全性
get不安全
post安全
3、提交原理
get提交是參數一個一個的提交
post提交是所有參數作為一個整體一起提交
4、提交數據大小
get提交一般不超過255個位元組
post提交的大小取決於伺服器
// 在php.ini中,可以配置post提交的大小 post_max_size = 8M
5、靈活性
get很靈活,只要有頁面的跳轉就可以傳遞參數
post不靈活,post提交需要有表單的參與
1、 html跳轉 <a href="index.php?name=tom&age=20">跳轉</a> 2、JS跳轉 <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跳轉 header('location:index.php?name=tom&age=22')
小結:
|
GET |
POST |
---|---|---|
外觀上 |
在地址上看到傳遞的參數和值 |
地址欄上看不到數據 |
提交數據大小 |
提交少量數據,不同的瀏覽器最大值不一樣,IE是255個字元 |
提交大量數據,可以通過更改php.ini配置文件來設置post提交數據的最大值 |
安全性 |
低 |
高 |
提交原理 |
提交的數據和數據之間在獨立的 |
將提交的數據變成XML格式提交 |
靈活性 |
很靈活,只要有頁面的跳轉就可以get傳遞數據 |
不靈活 |
1.4 伺服器接受數據的三種方式
通過名字獲取名字對應的值
$_POST:數組類型,保存的POST提交的值 $_GET:數組類型,保存的GET提交的值 $_REQUEST:數組類型,保存的GET和POST提交的值
例題:
HTML頁面
<body> <!--表單提交數據--> <form method="get" action="./2-demo2.php"> 語文: <input type="text" name="ch"> <br /> 數學: <input type="text" name="math"> <br /> <input type="submit" name="button" value="提交"> <br><br> </form> <!--超鏈接提交數據--> <a href="2-demo2.php?ch=77&math=88">跳轉</a> <br><br> <!--js提交數據--> <input type="button" value="點擊" onclick="location.href='2-demo2.php?ch=66&math=55'"> <br><br> <input type="button" value="點擊" onclick="location.assign('2-demo2.php?ch=11&math=22')"> </body>
PHP頁面
<?php //post數組中不為空 if(!empty($_POST)) { echo '這是post提交的數據<br>'; echo '語文:'.$_POST['ch'],'<br>'; echo '數學:'.$_POST['math'],'<br>'; } echo '<hr>'; //獲取get提交的數據 if(!empty($_GET)){ echo '這是get提交的數據<br>'; echo '語文:'.$_GET['ch'],'<br>'; echo '數學:'.$_GET['math'],'<br>'; } echo '<hr>'; //既能獲取get又能獲取post提交的數據 echo $_REQUEST['ch'],'<br>'; echo $_REQUEST['math'];
思考題
在一個請求中,既有get又有post,get和post傳遞的名字是一樣的,這時候通過$_REQUET獲取的數據是什麼?
答:結果取決於配置文件
request_order = "GP" # 先獲取GET,在獲取POST值
例題
<?php if(!empty($_POST)){ echo '姓名:'.$_REQUEST['username'],'<br>'; } ?> <form method="post" action="?username=berry"> 姓名: <input type="text" name="username"><br /> <input type="submit" name="button" value="提交"> </form> 分析:先獲取GET的username,再獲取post的username,後面的將前面的值覆蓋
小結:
1、在開發的時候,如果明確是post提交就使用$_POST
獲取,如果明確get提交就用$_GET
獲取
2、request獲取效率低,儘可能不要使用,除非提交的類型不確定的情況下才使用。