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獲取效率低,儘可能不要使用,除非提交的類型不確定的情況下才使用。