国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP的文件上傳處理驗證示例

2024-09-04 11:45:11
字體:
來源:轉載
供稿:網友

文件上傳中有一塊非常重要的就是安全驗證了,如果驗證不合理就很容易給一些人把此利用上傳非常的黑客文件了,那么對于新學php新手文件上傳驗證有多了解呢?如果不懂可以看看本文章.

最近遇到一個事,把自己坑了好久,我想說說我開始的想法,PHP的上傳機制封裝的很完全,基本幾行代碼就能實現,他的實現流程是這樣的:

UPLOAD到文件到臨時目錄中?>使用move_uploadde_file()到指定的目錄

這就是PHP上傳流程,或者你在中途再進行一些驗證,例如判斷是不是通過upload方式提交的文檔,或者文件的擴展是不是我們允許的等等一系列驗證,我給出簡單的代碼也算是拋磚引玉了.

  1. $targetFolder = '/uploads'// 定義根目錄 
  2.  
  3. if (!emptyempty($_FILES)) { 
  4.  
  5.     $tempFile = $_FILES['Filedata']['tmp_name']; 
  6. //開源軟件:Vevb.com 
  7. if(is_uploaded_file($tempFile)) 
  8.  
  9.  
  10.     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder
  11.  
  12.     $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name']; 
  13.  
  14.     $fileTypes = array('jpg','jpeg','gif','png'); // 允許的后綴擴展 
  15.  
  16.     $fileParts = pathinfo($_FILES['Filedata']['name']); 
  17.  
  18.     if (in_array($fileParts['extension'],$fileTypes)) { 
  19.  
  20.         move_uploaded_file($tempFile,$targetFile); 
  21.  
  22.         echo '1'
  23.  
  24.     } else { 
  25.  
  26.         echo '非法上傳文檔.'
  27.  
  28.     } 
  29.  
  30. }else 
  31.  
  32.  
  33.    echo "非法上傳文件"
  34.  
  35.  

上面的這種方式基本就滿足了文件上傳,但我需要的不是這樣的.

上傳功能

需求:先點擊上傳文檔,然后選擇上傳文件,JS上傳后會返回一個值,顯示當前時間戳問名稱的文件在文檔名稱這個框框中.

然后點擊提交后,提交表單,服務器處理提交的表單,對上傳的文件進行重命名,問題也隨之而來了,服務器是IIS的,然后它是用的映射的方式實現的虛擬跟目錄.

這樣的話$_SERVER[‘DOCUMENT_ROOT’]就不在PHP站點的根目錄,雖然完成了上傳的功能,但無法下載這個文件,從服務器的安全考慮,還是打算把文件放在PHP站點內.

然后我就陷進了一個思維局限中.

再仔細想一想:為何我不用實現PHP的上傳機制的方式在重復一次,PHP不是將文件先放到臨時目錄里面嗎?然后我為嘛假設JS上傳成功后的目錄也是一個臨時目錄,然后在再一次提交表單的時候進行文件復制,到指定的目錄這樣就完成了需要的功能.

PHP有一個文件復制函數Copy(); 然后在配合rename()函數,這樣就可以完成上傳后文件的第二次移動和重命名了.

注意:在window平臺下如果復制一個零字節的文件,copy() 將返回 FALSE,但文件也會被正確復制.

然后PHP在文件處理上,積極的參考了Liunx的文件處理機制,PHP的文件操作效率,這跟I/O對寫和操作系統有關.

總結:其實解決問題的方式很多,而且不要給自己畫圈從而限定自己的思維.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南川市| 察隅县| 灵丘县| 固原市| 敖汉旗| 奇台县| 通道| 韶关市| 海林市| 长春市| 临朐县| 仲巴县| 盐城市| 滕州市| 恩平市| 百色市| 小金县| 宜宾市| 瓮安县| 罗平县| 潜江市| 新宁县| 安泽县| 吐鲁番市| 香港 | 曲水县| 泸溪县| 昆山市| 彰化市| 汉阴县| 定南县| 澎湖县| 邻水| 石景山区| 无棣县| 舒城县| 兴化市| 河池市| 黔西县| 桦川县| 桦川县|