在用php上传文件时一般限制可上传的文件类型的做法是通过文件的后缀进行判断,但这样的做法存在缺点,相信所有的phper们都是知道的,下面介绍一个可以从最根本上判断用户上传的文件类型的函数。
简要分析一下本函数通过文件头信息实现判断上传文件类型的过程思路,首先使用用fopen()函数打开上传的文件,然后通过fread()读取文件的前2个字节。得到的内容会是二进制的字符串,为了能在程序代码中做判断,这里使用的是unpack()函数把二进制数据转换成十进制数字的字符串(unpack()函数主要用于二进制操作,具体用法可参见php帮助文档,这里做解释!),然后进行判断即可。
下面直接把案例代码贴出来吧:
时代网站信息管理系统SDCMS是一个以asp+access进行开发的门户网站系统。SDCMS门户版主要包含:文章、组图、视频、下载、单页、外链等模块,系统内置会员模型:会员组,VIP会员,积分购买,会员投稿,投票,评论,留言,心情,搜索,标签,头像组件,在线充值,支持QQ、新浪微博、支付宝等账户的一键登录登功能,是您快速建立类似A5,站长之家之类门户平台的良好选择。
155
<p>$filename='http://www.scutephp.com/logo.gif';</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</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;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号