PHP表單數(shù)據(jù)處理與文件上傳

一、表單簡介

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

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

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

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

二、文件上傳的相關(guān)配置

1、表單設(shè)置

要進(jìn)行文件的上傳,需要對form表單進(jìn)行特殊設(shè)置;

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

2、PHP設(shè)置

  • file_uploads是否允許通過HTTP上傳文件,默認(rèn)為NO;

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

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

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

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

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

三、$_FILES數(shù)組

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

$_FILES是一個二維數(shù)組,數(shù)組中共有5項(xiàng):

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

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

四、上傳錯誤信息

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

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;如網(wǎng)絡(luò)出現(xiàn)錯誤,導(dǎo)致上傳過程中斷;

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

五、文件上傳函數(shù)

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

代碼示例

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

示例代碼

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容