1. 程式人生 > >【php網路 基礎知識】詳解get、post請求、檔案上傳

【php網路 基礎知識】詳解get、post請求、檔案上傳

由客戶端向伺服器端傳資料的兩種方式:get、post

伺服器端接收資料,php有三種方式:$_GET、$_POST、$_REQUEST

第一種:get請求,資料儲存在$_GET陣列中

注意:$_GET陣列中的資料已經過urlencode()處理(這個很容易忽略)

歷史:4.1.0之前,使用get方式傳輸的資料儲存在$_HTTP_GET_VARS陣列中,$_HTTP_GET_VARS不是一個超全域性變數,4.0.1之後,棄用$_HTTP_GET_VARS,改用$_GET

最大長度問題:RFC協議並沒有做最大長度限制,這個是由不同的瀏覽器廠商定的,並且同一瀏覽器的不同版本也有不同,面對這些不確定,開發人員只要做到get請求的url不要過長即可(post請求的最大長度是由伺服器限制的,為何瀏覽器廠商要對get請求資料長度做這樣的顯示而對post請求沒有,想不通)

安全問題:只要是使用者傳輸到伺服器的資料都是不可信的,對於get請求傳輸的資料作何處理能保證安全最大化呢?

被遺忘的用法:post請求時,有時會用這種方式傳一個數組,get請求也可以,如:index.php?name[]=xing&name[]=dian

<input name="name[]" />
<input name="name[]" />


第二種:post請求,資料儲存在$_POST陣列中

注意:$_POST陣列中的資料未經過urlencode()處理(這個很容易忽略)

歷史:4.1.0之前,使用post方式傳輸的資料儲存在$_HTTP_POST_VARS陣列中,$_HTTP_

POST_VARS不是一個超全域性變數,4.0.1之後,棄用$_HTTP_POST_VARS,改用$_POST

最大長度問題:受php.ini中的引數post_max_size影響,預設2M

安全問題:只要是使用者傳輸到伺服器的資料都是不可信的,對於post請求傳輸的資料作何處理能保證安全最大化呢?

第三種:$_REQUEST(實際開發中基本不用,缺點太多)

缺點:

1、get、post請求傳輸的資料都可儲存在$_REQUEST陣列中,如果引數名相同就會造成覆蓋

2、不安全

3、沒必要,如下程式碼:

$data = empty($_POST)? $_GET : $_POST;