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;
}
打赏

本文固定链接: https://www.cxy163.net/archives/3892 | 绝缘体

该日志由 绝缘体.. 于 2013年10月08日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP判断上传文件类型最安全,最真实的解决办法 | 绝缘体
关键字: , , , ,

PHP判断上传文件类型最安全,最真实的解决办法:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter