php獲取web伺服器數據的快捷方法:post和get的區別與聯繫

2021-01-07 中原說教育

現如今,網際網路已經大大地豐富了我們的生活,現在的人越來越離不開網際網路了。網際網路開發也稱為現在的熱門職業。但是,在人人都離不開網際網路的時代,你知道網際網路是如何通過代碼獲取web伺服器上的數據嗎?

下面,就來聊聊網際網路獲取數據的常用方法——get和post方法。這兩種方法都可以獲取web伺服器上的數據。不過,他們既有相同點,也有不同點。下面我們一起來看看這兩種方法的詳細情況吧。

post和get的區別與聯繫

$_GET方法

預定義的 $_GET 變量用於收集來自 method="get" 的表單中的值。從帶有 GET 方法的表單發送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),並且對發送信息的量也有限制。例如我要get一個ID的值,在網頁上將會這樣顯示(這裡要將ID=2的這個消息的取消點讚):

get一個ID的值

在GET請求中,其本意是從伺服器中下載相應的數據,數據是後綴在URL後面來發送的,就如下圖那樣(使用postman測試get方式的數據請求),PHP將GET請求封裝在了$_GET數組中,請求的變量名是數組的下標,要接收上面那個請求傳遞的兩個變量msg_id使用$_GET['msg_id']即可。請看下面的例子:

使用postman測試get方式的數據請求

示例代碼如下:

public function actionlist(){$user = \Yii::$app->user->identity;$msg_id = \Yii::$app->request->get('msg_id');$fields = ['id','user_id', 'is_delete', 'created_at','content', 'msg_id', 'parent_id','deleted_at'];$query = FriendComment::find()->select($fields)->where(['msg_id' => $msg_id, 'is_delete' => 0])->asArray()->all();$count = $query->count();$pagination = new Pagination(['totalCount' => $count]);$query->orderBy('created_at desc');$list = $query->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();$result = array();$result["count"] = $count;$result["list"] = $list;return $result;}

上述php代碼是一個簡單的從web伺服器的資料庫中下載數據的例子,其功能是從對應的表單中找到某個朋友圈消息的評論,並將數據結果統計後一數組的形式顯示出來,在顯示過程中可以分頁顯示

當然,有時候,在程序中並不能確定客戶端提交了哪些數據過來,那麼怎麼樣在不知道請求變量名字的前提下遍歷請求數據呢?這種屏蔽細節,遍歷集合的方法在《設計模式》中被稱為迭代(Iterate), PHP中是通過foreach語句來實現的。例如:

<!-- iterator.php -->

<?php

foreach($_GET as $index => $value) echo "$_GET[$index] = $value", "<BR>";

?>

我們在使用對應的url網頁訪問的時候,就會看到foreach語句將所有用GET方法請求的變量都枚舉出來了,而在事先,我們並不知道每個請求變量的名字。

$_POST方法

預定義的 $_POST 變量用於收集來自 method="post" 的表單中的值。從帶有 POST 方法的表單發送的信息,對任何人都是不可見的(不會顯示在瀏覽器的地址欄),並且對發送信息的量也沒有限制。

注意:默認情況下,POST 方法的發送信息的量最大值為 8 MB(可通過設置 php.ini 文件中的 post_max_size 進行更改)。

POST方法的主要用途就是「傳遞」數據,最直白的意思就是將數據傳送到web伺服器了。它將數據放在所有請求標題的後面上傳,這樣一來,無論有多少數據上傳都不成問題了(這樣請求數據的大小之取決於WEB服務允許的尺寸了)。

通常來說,對於表單數據如無特別需要都使用POST方法來上傳,這樣就無須去關心具體上傳數據的尺寸了。POST方法的請求數據被封裝到了$_POST數組中,其使用方法與$_GET數組一樣。將上面的表單添加一個method屬性,

相關焦點

  • PHP面試題:put與post的區別
    不知道存在put這種方式http協議規定了四種資源訪問形式:get、post、put、delete。get:獲取資源 post:修改資源 put:上傳資源 delete:刪除資源 在html的form表單的method裡只有get與post兩種方式2.
  • 必須知道的get和post的區別
    序號方法描述1GET請求指定的頁面信息,並返回實體主體。2HEAD類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭3POST向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。4PUT從客戶端向伺服器傳送的數據取代指定的文檔的內容。5DELETE請求伺服器刪除指定的頁面。
  • PHP:6種GET和POST請求發送方法
    文章總結了PHP程式語言的6種GET和POST請求發送方法,希望對學習PHP的人有所幫助~在i94web
  • 都 9102 年了,還問 GET 和 POST 的區別
    和 post 的區別,而搜索出來的答案並不能讓我們裝得一手好逼,那就讓我們從 HTTP 報文的角度來擼一波,從而搞明白他們的區別。POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 伺服器日誌中。可見性數據在 URL 中對所有人都是可見的。數據不會顯示在 URL 中。注意,並不是說標準答案有誤,上述區別在大部分瀏覽器上是存在的,因為這些瀏覽器實現了 HTTP 標準。但是,前面列舉的只是瀏覽器實現上的區別,而不是 get 和 post 的本質區別。
  • 我終於知道post和get的區別
    HTTP1.0定義了三種請求方法:GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。2 HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。
  • 表單FORM與GET方法的區別
    表單提交中Get和Post方式的區別有5點1. get是從伺服器上獲取數據,post是向伺服器傳送數據。2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。
  • jQuery的$.get()、$.post()和$.ajax()以GET/POST方式請求數據
    、post、put、deletet等,但是最常用的是獲取數據和提交數據,獲取數據是get請求,提交數據是post請求。$.get()方法在jQuery中,對於HTTP GET的請求,專門封裝了$.get()方法進行專項的GET請求,這樣當我們只需要獲取數據時,直接使用$.get()專項方法從遠程伺服器拿數據即可。
  • Get 和 Post 區別
    瀏覽器的get和post有什麼區別?第1個從他們字面意思去理解這些,就是從網頁上獲取一個數據。然後這個獲取數據是對伺服器不會產生副作用的,術語就是數學上的 冪等即多次操作不產生影響(比如任何數乘1或者乘0,多次乘之後,都不會變化),那樣多次操作也不會去產生副作用。
  • 在PHP中使用CURL實現GET和POST請求的方法
    1.CURL介紹CURL是一個利用URL語法規定來傳輸文件和數據的工具.支持很多協議,如HTTP、FTP、TELNET等。
  • WEB前端開發工程師可以了解的PHP基礎表單提交GET/POST
    /*管理員登陸1.前臺頁面 :用戶名 密碼 登陸放在form中1.2.用戶輸入可以提交: 提交到那個頁面action 提交方式 method=get post 默認提交參數方式是get1.3.確定提交參數 加上name
  • php學習之php的預定義變量的使用
    $GLOBALS說明:globals是php內置的可以自動獲取當前頁面中的所有變量的內容,包括局部變量、全局變量、靜態變量2.$_SERVER說明:server會自動獲取伺服器和客戶端的信息$_SERVER是一個包含了諸多如頭信息(header)、路徑(path)、以及腳本位置(scriptlocations)等信息的數組。
  • PHP獲取HTTP POST中不同格式的數據
    源 / php中文網      源 / www.php.cnHTTP協議中的POST 方法有多中格式的數據協議,在HTTP的head中用不同的Content-type標識.常用的有application/x-www-form-urlencoded,這是最常見的,就是from表單的格式.在HTTP的head中是Content-Type: application
  • 問題回答:Http 請求的Post 和Put 的區別
    很快有人回答「put請求單個數據」,後面提問人又去網上查了資料,查出來 put 和 post的區別是 「put 同樣的請求,前一條會被後一條覆蓋」。那麼到底Http 請求的 post 和 put的區別是什麼呢?特別提一下,我們不能把一些中文資料裡的通俗解釋當作標準答案。在網上查資料,我們需要培養一定的鑑別能力。首先,這裡有一個誤區,很多沒寫過 web 應用的同學認為這兩個方法的功能區別是固有的,一定存在的。
  • c++ Post基礎入門篇 第4課WinHttp代理設置及get、post方法演示
    一、get方法提交數據到伺服器get方法提交數據是將要提交的數據附加在URL地址後,以鍵值對的形式,多個鍵值對用"&"連接起來。name=%s&pass=%s"), user, pass);_bstr_t bsData = csData;hr = pRequest->Open(_T("GET"), bsData);二、post方法提交數據到伺服器post
  • 美團面試官,一上來,就叫我說Post和Get的區別?我慌了...
    2 HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。4 PUT 從客戶端向伺服器傳送的數據取代指定的文檔的內容。
  • 【PHP專題8】表單-用戶輸入名字,發送服務端接收數據
    >14-18行申明一個表單14行:action點擊跳轉data.php(現在這個php還沒有,一會實現),用post協議跳轉15行name是顯示文字(可以用中文)<input標籤輸入 name是參數雙引號name是變量「name」=$name17行一個提交按鈕,觸發action步驟2(模擬服務端接收,用另外一個網頁得到數據
  • CTF網絡安全奪旗賽—WEB基礎篇
    web,更可廣泛用於伺服器、PC、筆記本電腦、平板電腦和智慧型手機等設備。收集表單數據:關於這一點,表單是編程常用的數據輸入界面。表單提交時通常使用get或者post兩種方法將數據發送給php程序腳本進行處理。
  • [基礎] PHP與Curl採用的GET,POST,JSON方式請求API
    或許你早就知道如何用,或許對你有些許幫助,可是最後還是感謝你的關注鞏固php基礎,分享給你視頻教程【PHP7.x入門到進階,初學者直接獲取!】,公眾號裡回覆:20200202   免費領取提取碼!/** * 請求一個地址 * * @param   string $url 需要請求的地址 * @param   array $post 需要以post的方式發送的數據 * @param   bool $is_async 是否是異步方式請求;暫未實現 * @param   int $retry 重試次數;默認0
  • 網絡爬蟲——Requests,GET和POST
    Requests繼承了urllib的所有特性,Requests支持http連結保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應內容的編碼,支持國際化的url和post數據自動編碼。Requests的底層實現其實就是urllib3.
  • jQuery - AJAX post() 方法
    jQuery $.post() 方法$.post() 方法通過 HTTP POST 請求向伺服器提交數據。實例:使用 $.post() 連同請求一起發送數據$("button").click(function(){ $.post("demo_post.php", {