如何判断上传文件的类型呢?我的意思是不应当靠后缀来判断,后缀其实没什么用。怎样判断上传文件的真实类型。
比如我想上传图片,你把一个 exe ,bat 为后缀的可执行文件改为 jpg,我想在上传前就能识别这个文件的真实类型,
我该怎么做?高分求解答。
比如我想上传图片,你把一个 exe ,bat 为后缀的可执行文件改为 jpg,我想在上传前就能识别这个文件的真实类型,
我该怎么做?高分求解答。
解决方案 »
- 请教一个关于php模拟登录的问题
- 帮我看看这段代码错在哪里 php,谢谢,找了一天了,找不到
- 帮忙推荐几个PHP的群.
- Discuz! 6.1.0入侵方法 或步骤
- 寻求PHP的Ajax高手合作
- php中加入javascript想要没有输入title的时候跳出对话框以后在回到ckeditor里面重新编辑。
- 网站留言本被人插入大量垃圾信息
- ->唠叨大哥请进:关于24小时内点击最高的新闻sql语句
- 如何清除COOKIE?(急急急)
- 已经一天了求解脱Fatal error: Call to undefined function mb_detect_encoding()
- url解码汉字出现乱码该怎么解决?
- 求一个php连mysql 存储过程的写法
判断类型是否在你需要的范围中,你限定的类型可以用数组
例如
$array=('xxx','yyy');//xxx yyy为你需要限制的类型
if(!in_array($type,$array))
return false;
function check_file_type($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 8075:
$fileType = 'zip';
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;
}
//Fix
if ($strInfo['chars1']=='-1' AND $strInfo['chars2']=='-40' ) return 'jpg';
if ($strInfo['chars1']=='-119' AND $strInfo['chars2']=='80' ) return 'png';
return $fileType;
}用它判断严不严谨
况且浏览器都不能正确判断所有的图片类型
同一个文件通过不同的浏览器上传,就可能有不同的结果