PHP分析文件头信息判断上传文件的类型

WBOY
Libérer: 2016-06-20 13:04:38
original
1066 Les gens l'ont consulté

在用PHP上传文件时一般限制可上传的文件类型的做法是通过文件的后缀进行判断,但这样的做法存在缺点,相信所有的phper们都是知道的,下面介绍一个可以从最根本上判断用户上传的文件类型的函数。

简要分析一下本函数通过文件头信息实现判断上传文件类型的过程思路,首先使用用fopen()函数打开上传的文件,然后通过fread()读取文件的前2个字节。得到的内容会是二进制的字符串,为了能在程序代码中做判断,这里使用的是unpack()函数把二进制数据转换成十进制数字的字符串(unpack()函数主要用于二进制操作,具体用法可参见php帮助文档,这里做解释!),然后进行判断即可。

下面直接把案例代码贴出来吧:

<p>$filename='http://www.scutephp.com/logo.gif';</p>$file=fopen($filename,'rb');<br />$bin=fread($file,2); //只读取上传文件的头文信息的2个字节<br />fclose($file);<br />$strInfo=@unpack('c2chars',$bin);<br />$typeCode=intval($strInfo['chars1'].$strInfo['chars2']);<br />$fileType='';<br />switch ($typeCode){<br />	case 7790:<br />		$fileType='exe';<br />	break;<br />	case 7784:<br />		$fileType='midi';<br />	break;<br />	case 8297:<br />		$fileType='rar';<br />	break;<br />	case 255216:<br />		$fileType='jpg';<br />	break;<br />	case 7173:<br />		$fileType='gif';<br />	break;<br />	case 6677:<br />		$fileType='bmp';<br />	break;<br />	case 13780:<br />		$fileType='png';<br />	break;<br />	default:<br />		echo 'unknown';<br />	break;<br />}<br />echo '文件类型:'.$fileType.' 文件头信息:'.$typeCode;
Copier après la connexion


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal