Web

Check zip magic number, rar magic number

Check zip magic number, rar magic number dùng để kiểm tra xem file upload có phải là file *.zip hoặc file *.rar hay không.

function isRarOrZip($file) {
    // get the first 7 bytes
    $bytes = file_get_contents($file, FALSE, NULL, 0, 7);
    $ext = strtolower(substr($file, - 4));
    // RAR magic number: Rar!\x1A\x07\x00
    // http://en.wikipedia.org/wiki/RAR
    if ($ext == '.rar' and bin2hex($bytes) == '526172211a0700') {
        return TRUE;
    }
    // ZIP magic number: none, though PK\003\004, PK\005\006 (empty archive),
    // or PK\007\008 (spanned archive) are common.
    // http://en.wikipedia.org/wiki/ZIP_(file_format)
    if ($ext == '.zip' and substr($bytes, 0, 2) == 'PK') {
        return TRUE;
    }
    return FALSE;
}
Nguồn: https://stackoverflow.com/questions/6977544/rar-zip-files-mime-type
Kiểm tra phải file upload lên là file zip hay không, nếu đúng thì giải nén ra
if(isRarOrZip($targetFile)){
		$zip = new ZipArchive;
		$res = $zip->open($targetFile);
		if ($res === TRUE) {
		  $zip->extractTo($foldername.'/'.$namefile);
		  $zip->close();
		  echo 'done!';
		} else {
		  echo 'error!';
		}
		unlink($targetFile);
		$dirapp=$diroot.$webfol.'uploads/';
		$prefixname='redrose'.'-'.$namefile.'_'.date("dmYgisa");
		$fullpathzip=$dirapp.$namefile;
		$dirname=$dirapp.$prefixname;
		rename($fullpathzip,$dirname);
	}
  -soiqualang_chentreu  ]]>

1 thought on “Check zip magic number, rar magic number

Leave a Reply

Your email address will not be published. Required fields are marked *