最近在做一個小型的個人博客時,發現自己在數據獲取方面總是出現各種問題,現就網頁數據的獲取方式加以歸類總結。
最常見的獲取數據的方式有兩種:
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方式。
