php文件类型检测:根据二进制文件头判断文件类型的函数

发布时间:2020-09-15编辑:脚本学堂
php按照文件扩展名来判断文件类型,可以通过修改扩展名轻松跳过检测,这里分享的一段php代码,通过读取文件信息来识别,根据二进制文件头判断文件类型更准确。

代码:
 

复制代码 代码示例:
<?php
$files = array('./test.jpg', 'test.png');
$fileTypes = array(
  7790  => 'exe',
  7784  => 'midi',
  8075  => 'zip',
  8297  => 'rar',
  225216  => 'jpg',
  7173  => 'gif',
  6677  => 'bmp',
  13780   => 'png',
);
foreach($files as $file) {
  $fp = fopen($file, 'rb');
  $bin = fread($fp, 2); // 只读头两个字节
  fclose($fp);
  $strInfo = @unpack("C2chars", $bin);
  $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
  $fileType = isset($fileTypes[$typeCode]) ? $fileTypes[$typeCode] : 'unknown';
  echo $file , ' type : <b>', $fileType, '</b> code : <b>', $fileType, '</b><br />';
}