程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP分析文件頭信息判斷上傳文件的類型

PHP分析文件頭信息判斷上傳文件的類型

編輯:PHP綜合
    在用PHP上傳文件時一般限制可上傳的文件類型的做法是通過文件的後綴進行判斷,但這樣的做法存在缺點,相信所有的phper們都是知道的,下面介紹一個可以從最根本上判斷用戶上傳的文件類型的函數。
    簡要分析一下本函數通過文件頭信息實現判斷上傳文件類型的過程思路,首先使用用fopen()函數打開上傳的文件,然後通過fread()讀取文件的前2個字節。得到的內容會是二進制的字符串,為了能在程序代碼中做判斷,這裡使用的是unpack()函數把二進制數據轉換成十進制數字的字符串(unpack()函數主要用於二進制操作,具體用法可參見php幫助文檔,這裡做解釋!),然後進行判斷即可。
    下面直接把案例代碼貼出來吧:
    $filename='http:///logo.gif';
    $file=fopen($filename,'rb');
    $bin=fread($file,2); //只讀取上傳文件的頭文信息的2個字節fclose($file);
    $strInfo=@unpack('c2chars',$bin);
    $typeCode=intval($strInfo['chars1'].$strInfo['chars2']);$fileType='';
    switch ($typeCode){
    case 7790:
    $fileType='exe';
    break;
    case 7784:
    $fileType='midi';
    break;
    case 8297:
    $fileType='rar';
    break;
    case 255216:
    $fileType='jpg';
    break;
    case 7173:
    $fileType='gif';
    break;
    case 6677:
    $fileType='bmp';
    break;
    case 13780:
    $fileType='png';
    break;
    default:
    echo 'unknown';
    break;
    }
    echo '文件類型:'.$fileType.' 文件頭信息:'.$typeCode; *
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved