PHP實(shí)現(xiàn)文件上傳
時(shí)間會(huì)讓人遺忘一切,而整理遺忘的知識(shí)會(huì)讓你在未來(lái)的路上不迷茫!
很多網(wǎng)站都需要實(shí)現(xiàn)文件上傳功能,這個(gè)功能說(shuō)大不大,說(shuō)小不小,但是如果文件上傳出現(xiàn)漏洞,可能會(huì)導(dǎo)致網(wǎng)站的控制權(quán)被hack拿下,所有文件上傳的控制要做到嚴(yán)格嚴(yán)格再嚴(yán)格,為了更加深刻研究文件上傳漏洞的原理,本文主要編寫了文件上傳的基本功能,只是簡(jiǎn)單的做了一個(gè)校驗(yàn)。
先看我的前端頁(yè)面,這里額前端代碼和原來(lái)有點(diǎn)小小的區(qū)別,那就是采用二進(jìn)制傳輸?shù)姆椒ㄟM(jìn)行數(shù)據(jù)傳輸。前端文件名:upload.php

文件上傳的接收,處理都寫在以下這段代碼中,這個(gè)文件起名為upload_server.php

在文章結(jié)尾處,在附一個(gè)文件上傳error碼以及含義:
$_FILES[‘file’][‘error’]有以下幾種類型
1、UPLOAD_ERR_OK:其值為 0,沒(méi)有錯(cuò)誤發(fā)生,文件上傳成功。
2、UPLOAD_ERR_INI_SIZE:其值為 1,上傳的文件超過(guò)了 php.ini 中 upload_max_filesize選項(xiàng)限制的值。
3、UPLOAD_ERR_FORM_SIZE:其值為 2,上傳文件的大小超過(guò)了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。
4、UPLOAD_ERR_PARTIAL:其值為 3,文件只有部分被上傳。
5、UPLOAD_ERR_NO_FILE:其值為 4,沒(méi)有文件被上傳。
6、UPLOAD_ERR_NO_TMP_DIR:其值為 6,找不到臨時(shí)文件夾。PHP 4.3.10 和 PHP 5.0.3 引進(jìn)。
7、UPLOAD_ERR_CANT_WRITE:其值為 7,文件寫入失敗。PHP 5.1.0 引進(jìn)。
服務(wù)熱線: