«

PHP判断上传文件类型最安全,最真实的解决办法

时间:2024-1-22 14:20     作者:韩俊     分类: PHP


php通过判断上传文件的头字符来判断文件的类型,这可以称得上是最安全,最真实确定上传文件类型的方法了,具体实现方法:

/**
* 读取文件前几个字节 判断文件类型
* @return string
*/
function checkFileType($filename){
    $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:
            $fileType='unknown'.$typeCode;
        break;
    }
    //Fix
    if($strInfo['chars1']=='-1' && $strInfo['chars2']=='-40'){
        return 'jpg';
    }
    if($strInfo['chars1']=='-119' && $strInfo['chars2']=='80'){
        return 'png';
    }
    return $fileType;
}

标签: php php教程

热门推荐