php根据文件头验证文件类型的代码_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2238 | 回复: 0   主题: php根据文件头验证文件类型的代码        下一篇 
    本主题由 koei123 于 2015-6-1 14:45:23 移动
d87025284
注册用户
等级:新兵
经验:62
发帖:59
精华:0
注册:2011-10-31
状态:离线
发送短消息息给d87025284 加好友    发送短消息息给d87025284 发消息
发表于: IP:您无权察看 2015-5-26 15:28:45 | [全部帖] [楼主帖] 楼主

/**

* 检证文件类型类

*

* @author Silver

* by bbs.it-home.org

*/
class FileTypeValidation
{
      // 文件类型,不同的头信息
      private static $_fileFormats = Array(
      'jp2' => '0000000C6A502020',
      '3gp' => '0000002066747970',
      '3gp5' => '0000001866747970',
      'm4a' => '00000020667479704D3441',
      'ico' => '00000100',
      'spl' => '00000100',
      'vob' => '000001BA',
      'cur' => '00000200',
      'wb2' => '00000200',
      'wk1' => '0000020006040600',
      'wk3' => '00001A0000100400',
      'wk4' => '00001A0002100400',
      'wk5' => '00001A0002100400',
      '123' => '00001A00051004',
      'qxd' => '00004D4D585052',
      'mdf' => '010F0000',
      'tr1' => '0110',
      'rgb' => '01DA01010003',
      'drw' => '07',
      'dss' => '02647373',
      'dat' => 'A90D000000000000',
      'db3' => '03',
      'qph' => '03000000',
      'adx' => '80000020031204',
      'db4' => '04',
      'n' => 'FFFE0000',
      'a' => 'FFFE0000',
      'skf' => '07534B46',
      'dtd' => '0764743264647464',
      'db' => 'D0CF11E0A1B11AE1',
      'pcx' => '0A050101',
      'mp' => '0CED',
      'doc' => 'D0CF11E0A1B11AE1',
      'nri' => '0E4E65726F49534F',
      'wks' => 'FF00020004040554',
      'pf' => '1100000053434341',
      'ntf' => '4E49544630',
      'nsf' => '4E45534D1A01',
      'arc' => '41724301',
      'pak' => '5041434B',
      'eth' => '1A350100',
      'mkv' => '1A45DFA393428288',
      'ws' => '1D7D',
      'gz' => '1F8B08',
      'tar.z' => '1FA0',
      'ain' => '2112',
      'lib' => '213C617263683E0A',
      'msi' => 'D0CF11E0A1B11AE1',
      'vmdk' => '4B444D',
      'dsp' => '23204D6963726F73',
      'amr' => '2321414D52',
      'hdr' => '49536328',
      'sav' => '24464C3240282329',
      'eps' => 'C5D0D3C6',
      'pdf' => '25504446',
      'fdf' => '25504446',
      'hqx' => '2854686973206669',
      'log' => '2A2A2A2020496E73',
      'ivr' => '2E524543',
      'rm' => '2E524D46',
      'rmvb' => '2E524D46',
      'ra' => '2E7261FD00',
      'au' => '646E732E',
      'cat' => '30',
      'evt' => '300000004C664C65',
      'asf' => '3026B2758E66CF11',
      'wma' => '3026B2758E66CF11',
      'wmv' => '3026B2758E66CF11',
      'wri' => 'BE000000AB',
      '7z' => '377ABCAF271C',
      'psd' => '38425053',
      'sle' => '414376',
      'asx' => '3C',
      'xdr' => '3C',
      'dci' => '3C21646F63747970',
      'manifest' => '3C3F786D6C2076657273696F6E3D',
      'xml' => '3C3F786D6C2076657273696F6E3D22312E30223F3E',
      'msc' => 'D0CF11E0A1B11AE1',
      'fm' => '3C4D616B65724669',
      'mif' => '56657273696F6E20',
      'gid' => '4C4E0200',
      'hlp' => '4C4E0200',
      'dwg' => '41433130',
      'syw' => '414D594F',
      'abi' => '414F4C494E444558',
      'aby' => '414F4C4442',
      'bag' => '414F4C2046656564',
      'idx' => '5000000020000000',
      'ind' => '414F4C494458',
      'pfc' => '414F4C564D313030',
      'org' => '414F4C564D313030',
      'vcf' => '424547494E3A5643',
      'bin' => '424C4932323351',
      'bmp' => '424D',
      'dib' => '424D',
      'prc' => '424F4F4B4D4F4249',
      'bz2' => '425A68',
      'tar.bz2' => '425A68',
      'tbz2' => '425A68',
      'tb2' => '425A68',
      'rtd' => '43232B44A4434DA5',
      'cbd' => '434246494C45',
      'iso' => '4344303031',
      'clb' => '434F4D2B',
      'cpt' => '43505446494C45',
      'cru' => '43525553482076',
      'swf' => '465753',
      'ctf' => '436174616C6F6720',
      'dms' => '444D5321',
      'adf' => '5245564E554D3A2C',
      'dvr' => '445644',
      'ifo' => '445644',
      'cdr' => '52494646',
      'vcd' => '454E545259564344',
      'mdi' => '4550',
      'e01' => '4C5646090D0AFF00',
      'evtx' => '456C6646696C6500',
      'qbb' => '458600000600',
      'cpe' => '464158434F564552',
      'flv' => '464C56',
      'aiff' => '464F524D00',
      'eml' => '582D',
      'gif' => '47494638',
      'pat' => '47504154',
      'gx2' => '475832',
      'sh3' => '4848474231',
      'tif' => '4D4D002B',
      'tiff' => '4D4D002B',
      'mp3' => '494433',
      'koz' => '49443303000000',
      'crw' => '49491A0000004845',
      'cab' => '4D534346',
      'lit' => '49544F4C49544C53',
      'chi' => '49545346',
      'chm' => '49545346',
      'jar' => '5F27A889',
      'jg' => '4A47040E000000',
      'kgb' => '4B47425F61726368',
      'shd' => '68490000',
      'lnk' => '4C00000001140200',
      'obj' => '80',
      'pdb' => 'ACED000573720012',
      'mar' => '4D41723000',
      'dmp' => '504147454455',
      'hdmp' => '4D444D5093A7',
      'mls' => '4D563243',
      'mmf' => '4D4D4D440000',
      'nvram' => '4D52564E',
      'ppz' => '4D534346',
      'snp' => '4D534346',
      'tlb' => '4D53465402000100',
      'dvf' => '4D535F564F494345',
      'msv' => '4D535F564F494345',
      'mid' => '4D546864',
      'midi' => '4D546864',
      'dsn' => '4D56',
      'com' => 'EB',
      'dll' => '4D5A',
      'drv' => '4D5A',
      'exe' => '4D5A',
      'pif' => '4D5A',
      'qts' => '4D5A',
      'qtx' => '4D5A',
      'sys' => 'FFFFFFFF',
      'acm' => '4D5A',
      'ax' => '4D5A900003000000',
      'cpl' => 'DCDC',
      'fon' => '4D5A',
      'ocx' => '4D5A',
      'olb' => '4D5A',
      'scr' => '4D5A',
      'vbx' => '4D5A',
      'vxd' => '4D5A',
      '386' => '4D5A',
      'api' => '4D5A900003000000',
      'flt' => '76323030332E3130',
      'zap' => '4D5A90000300000004000000FFFF',
      'sln' => '4D6963726F736F66742056697375616C',
      'jnt' => '4E422A00',
      'jtp' => '4E422A00',
      'cod' => '4E616D653A20',
      'dbf' => '4F504C4461746162',
      'oga' => '4F67675300020000',
      'ogg' => '4F67675300020000',
      'ogv' => '4F67675300020000',
      'ogx' => '4F67675300020000',
      'dw4' => '4F7B',
      'pgm' => '50350A',
      'pax' => '504158',
      'pgd' => '504750644D41494E',
      'img' => 'EB3C902A',
      'zip' => '504B0304140000',
      'docx' => '504B030414000600',
      'pptx' => '504B030414000600',
      'xlsx' => '504B030414000600',
      'kwd' => '504B0304',
      'odt' => '504B0304',
      'odp' => '504B0304',
      'ott' => '504B0304',
      'sxc' => '504B0304',
      'sxd' => '504B0304',
      'sxi' => '504B0304',
      'sxw' => '504B0304',
      'wmz' => '504B0304',
      'xpi' => '504B0304',
      'xps' => '504B0304',
      'xpt' => '5850434F4D0A5479',
      'grp' => '504D4343',
      'qemu' => '514649',
      'abd' => '5157205665722E20',
      'qsd' => '5157205665722E20',
      'reg' => 'FFFE',
      'sud' => '52454745444954',
      'ani' => '52494646',
      'cmx' => '52494646',
      'ds4' => '52494646',
      '4xm' => '52494646',
      'avi' => '52494646',
      'cda' => '52494646',
      'qcp' => '52494646',
      'rmi' => '52494646',
      'wav' => '52494646',
      'cap' => '58435000',
      'rar' => '526172211A0700',
      'ast' => '5343486C',
      'shw' => '53484F57',
      'cpi' => 'FF464F4E54',
      'sit' => '5374756666497420',
      'sdr' => '534D415254445257',
      'cnv' => '53514C4F434F4E56',
      'cal' => 'B5A2B0B3B3B0A5B5',
      'info' => 'E310000100000000',
      'uce' => '55434558',
      'ufa' => '554641C6D2C1',
      'pch' => '564350434830',
      'ctl' => '56455253494F4E20',
      'ws2' => '575332303030',
      'lwp' => '576F726450726F',
      'bdr' => '5854',
      'zoo' => '5A4F4F20',
      'ecf' => '5B47656E6572616C',
      'vcw' => '5B4D535643',
      'dun' => '5B50686F6E655D',
      'sam' => '5B7665725D',
      'cpx' => '5B57696E646F7773',
      'cfg' => '5B666C7473696D2E',
      'cas' => '5F434153455F',
      'cbk' => '5F434153455F',
      'arj' => '60EA',
      'vhd' => '636F6E6563746978',
      'csh' => '6375736800000002',
      'p10' => '64000000',
      'dex' => '6465780A30303900',
      'dsw' => '64737766696C65',
      'flac' => '664C614300000022',
      'dbb' => '6C33336C',
      'acd' => '72696666',
      'ram' => '727473703A2F2F',
      'dmg' => '78',
      'lgc' => '7B0D0A6F20',
      'lgd' => '7B0D0A6F20',
      'pwi' => '7B5C707769',
      'rtf' => '7B5C72746631',
      'psp' => '7E424B00',
      'wab' => '9CCBCB8D1375D211',
      'wpf' => '81CDAB',
      'png' => '89504E470D0A1A0A',
      'aw' => '8A0109000000E108',
      'hap' => '91334846',
      'skr' => '9501',
      'gpg' => '99',
      'pkr' => '9901',
      'qdf' => 'AC9EBD8F0000',
      'pwl' => 'E3828596',
      'dcx' => 'B168DE3A',
      'tib' => 'B46E6844',
      'acs' => 'C3ABCDAB',
      'lbk' => 'C8007900',
      'class' => 'CAFEBABE',
      'dbx' => 'CFAD12FE',
      'dot' => 'D0CF11E0A1B11AE1',
      'pps' => 'D0CF11E0A1B11AE1',
      'ppt' => 'D0CF11E0A1B11AE1',
      'xla' => 'D0CF11E0A1B11AE1',
      'xls' => 'D0CF11E0A1B11AE1',
      'wiz' => 'D0CF11E0A1B11AE1',
      'ac_' => 'D0CF11E0A1B11AE1',
      'adp' => 'D0CF11E0A1B11AE1',
      'apr' => 'D0CF11E0A1B11AE1',
      'mtw' => 'D0CF11E0A1B11AE1',
      'opt' => 'D0CF11E0A1B11AE1',
      'pub' => 'D0CF11E0A1B11AE1',
      'rvt' => 'D0CF11E0A1B11AE1',
      'sou' => 'D0CF11E0A1B11AE1',
      'spo' => 'D0CF11E0A1B11AE1',
      'vsd' => 'D0CF11E0A1B11AE1',
      'wps' => 'D0CF11E0A1B11AE1',
      'ftr' => 'D20A0000',
      'arl' => 'D42A',
      'aut' => 'D42A',
      'wmf' => 'D7CDC69A',
      'efx' => 'DCFE',
      'one' => 'E4525C7B8CD8A74D',
      'rpm' => 'EDABEEDB',
      'gho' => 'FEEF',
      'ghs' => 'FEEF',
      'wp' => 'FF575043',
      'wpd' => 'FF575043',
      'wpg' => 'FF575043',
      'wpp' => 'FF575043',
      'wp5' => 'FF575043',
      'wp6' => 'FF575043',
      'jfif' => 'FFD8FF',
      'jpe' => 'FFD8FF',
      'jpeg' => 'FFD8FF',
      'jpg' => 'FFD8FF',
      'mof' => 'FFFE23006C006900',
      'ipa' => '504B03040A',
      );
      /**

* 检查文件类型

*

* @param string $filePath 文件路径

* @param string $fileExt 文件扩展名

*

* @return boolean

*/
      public static function validation($filePath, $fileExt)
      {
            // 文件格式未知
            if (!isset(self::$_fileFormats[$fileExt]))
            {
                  return false;
            }
            $length = strlen(self::$_fileFormats[$fileExt]);
            $bin = self::_readFile($filePath, $length);
      $fileHead = @unpack("H{$length}", $bin);
            // 判断文件头
            if (strtolower(self::$_fileFormats[$fileExt]) == $fileHead[1])
            {
                  return true;
            }
            return false;
      }
      /**

* 读取文件内容

*

* @param string $filePath 文件路径

* @param integer $size

*

* @return string

*/
      private function _readFile($filePath, $size)
      {
            $file = fopen($filePath, "rb");
            $bin = fread($file, $size);
            fclose($file);
            return $bin;
      }
}
?>


调用示例:

require './class_filetypevalidation.php';
// 文件路径
$filePath = "D:/test.png";
$x = FileTypeValidation::validation($filePath, 'zip');
var_dump($x);
?>


--转自 北京联动北方科技有限公司



该贴由koei123转至本版2015-6-1 14:45:23



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论