php中,post與get獲取參數的異同


  最近在做一個小型的個人博客時,發現自己在數據獲取方面總是出現各種問題,現就網頁數據的獲取方式加以歸類總結。

  最常見的獲取數據的方式有兩種:

  1. get方法 從指定的資源請求數據 即從服務器上獲取數據

  2. post方法  向指定的資源提交要被處理的數據 即向服務器傳送數據

  需要注意的一點是:

  Get方法:

  • 查詢字符串(名稱/值對)是在 GET 請求的 URL 中發送的,若使用get方法請求參數,需要在請求的URL后面傳入請求的參數值 (該信息用戶可以看到)

  ex:http://localhost/17.5.21/postGet.php?name=max&pass=123

  Post方法:

  • 查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發送的 (該信息用戶看不到)
 Post: http://localhost/17.5.21/postGet.php HTTP/1.1  Host: localhost  name=max&pass=123

 

  下面用一些代碼來實現具體的效果:

  • Get方法:
<?php $name = $_GET['name']; var_dump($name); $pass = $_GET['pass']; echo "<br/>"; echo 'pass='.$pass; echo '<hr>'; ?>

 因為使用get方法請求數據,所以在請求參數時,應在請求的URL后面加上請求的參數數據:?name=max&pass=123

  • Post方法:

  

<form method="post" name="form" action="postGet.php">
  <table >
      <tr>
       <td>用戶名:</td>
       <td><input type="text" name="username"/></td>
      </tr>
      <tr>
       <td>密碼:</td>
       <td><input type="password" name="psw"/></td>
      </tr>
      <tr>
       <td><input type="submit" name="Submit" value="提交"/></td>
      </tr>
  </table>
</form>

 
<?php $username = $_POST['username']; echo "用戶名:".$username; echo "<br/>"; $password = $_POST['psw']; echo "密碼:".$password; ?>

  Html效果如圖:

  因為使用Post方法請求數據,所以在獲取參數時可以使用$_POST['']; 直接通過獲取html頁面中的name值得到對應的用戶在輸入框輸入的參數值

  

 


  總結:

  1. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。

    post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。

  2. 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。

  3. get傳送的數據量較小,不能大於2KB。

    post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為 100KB。

  4. get安全性非常低,post安全性較高。但是get執行效率卻比Post高。

  

  建議:

  1、get方式的安全性較Post方式要差些,包含機密信息的話, 建議用Post數據提交方式;

  2、在做數據查詢時,建議用Get方式;而在做數據添加、修改或刪除時,建議用Post方式。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM