PHP表單數據處理與文件上傳

一、表單簡介

GET所有表單輸入的數據被加載到請求的URL地址后面;
如:test.php?username=free&password=123&content=dfdsfsfd;
GET方式提交數據只能傳遞文本,能夠提交的數據量大小有限,安全性差。

POST提交數據的方式把表單的數據打包放入http請求中;
POST能夠提交更多的數據;

表單提交的數據會自動封裝為數組;
用$_GET, $_POST,或 $_REQUEST獲得表單提交的數據;

多值表單控件(如復選框和多選框),大大提高了基于web的數據收集能力;因為這些組件是多值得,所以表單處理函數必須能夠識別一個表單變量中可能有多個值;為了讓php識別一個表單變量的多個值(即考慮為數組),需要對表單名(元素的name屬性值)增加一對中括號,如:
<input type php ="checkbox"name="love[]"/>

二、文件上傳的相關配置

1、表單設置

要進行文件的上傳,需要對form表單進行特殊設置;

  • 設定表單數據的提交方式為POST方式;
  • 給form表單添加enctype屬性值為:multipart/form-data;
  • 為了避免用戶避免用戶等待許久之后才發現上傳文件太大,可以在表單中添加MAX_FILE_SIZE隱藏域,通過設置器value值可以限制上傳文件的大小;
form設置

2、PHP設置

  • file_uploads是否允許通過HTTP上傳文件,默認為NO;

  • upload_max_filesize 允許上傳文件大小的最大值,默認為2M,此指令必須小于pose_max_size;

  • upload_tmp_dir指定上傳文件的臨時存放路徑,這個目錄對于擁有此服務器進程的用戶必須是可寫的;如果未指定則使用系統默認值;

  • post_max_size控制POST方式提交數據php所能夠接收的最大數據量;

  • memory_limit指定單個腳本程序可以使用的最大內存容量;

  • max_execution_time 此指令確定PHP腳本可以執行的最長時間,以秒為單位,默認為30秒;

三、$_FILES數組

$_FILES超全局變量作用是存儲各種與上傳文件有關的信息;

$_FILES是一個二維數組,數組中共有5項:

  • $_FILES["userfile"]["name"] 上傳文件的名稱
  • $_FILES["userfile"]["type"] 上傳文件的類型
  • $_FILES["userfile"]["size"] 上傳文件的大小,以字節為單位
  • $_FILES["userfile"]["tmp_name"] 文件上傳后在服務器端儲存臨時文件名
  • $_FILES["userfile"]["error"] 文件上傳相關的錯誤代碼

注意:userfile只是一個占位符,代表文件上傳表單元素的名字;因此這個值將根據你所給定的名稱有所不同;

四、上傳錯誤信息

$_FILES["userfile"]["error"] 提供了在文件上傳過程中出現的錯誤:

1、UPLOAD_ERR_OK(value = 0) 如果文件上傳成功返回0;

2、UPLOAD_ERR_INI_SIZE(value = 1) 如果試圖上傳的文件大小超過出了upload_max_filesize指令指定的值,則返回1;

3、UPLOAD_ERR_FORM_SIZE(value = 2) 如果試圖上傳的文件大小超過出了MAX_FILE_SIZE指令(可能嵌入在HTML表單中)指定的值,則返回2;

4、UPLOAD_ERR_PARTIAL(value = 3) 如果文件沒有完全上傳,則返回3;如網絡出現錯誤,導致上傳過程中斷;

5、UPLOAD
_ERR_NO_FILE(value = 4) 如果用戶沒有指定上傳的文件就提交表單,則返回4;

五、文件上傳函數

1、is_uploaded_file() 函數確定參數filename指定的文件是否使用HTTP POST上傳;

代碼示例

2、move_uploaded_file() 函數是將上傳文件從臨時目錄移動到目標目錄;雖然copy()也可以實現同樣功能,但move_uploaded_file() 還提供了一種額外的功能,它將檢查由filename輸入參數指定的文件確實是通過http post上傳機制上傳的。如果所指定的文件并非上傳文件,則移動失敗,返回false;

示例代碼

以上內容純屬個人理解,由于本人水平有限,若有錯漏之處,敬請指出斧正,小弟不勝感激,謝謝!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容