ホームページ  >  記事  >  バックエンド開発  >  PHP でアップロードされたファイルの種類を判断するコードの例

PHP でアップロードされたファイルの種類を判断するコードの例

WBOY
WBOYオリジナル
2016-07-25 08:59:41969ブラウズ
  1. /**
  2. * アップロードされたファイルの種類を決定する
  3. * bbs.it-home.org を編集する
  4. */
  5. function file_type($filename)
  6. {
  7. $file = fopen($filename, "rb");
  8. $bin = fread($file, 2); //只读2字节
  9. fclose($file);
  10. $strInfo = @unpack("C2chars", $bin);
  11. $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
  12. $fileType = '';
  13. switch ($typeCode)
  14. {
  15. case 7790:
  16. $fileType = 'exe';
  17. 休憩;
  18. ケース 7784:
  19. $fileType = 'midi';
  20. 休憩;
  21. ケース 8297:
  22. $fileType = 'rar';
  23. 休憩;
  24. ケース 8075:
  25. $fileType = 'zip';
  26. 休憩;
  27. ケース 255216:
  28. $fileType = 'jpg';
  29. 休憩;
  30. ケース 7173:
  31. $fileType = 'gif';
  32. 休憩;
  33. ケース 6677:
  34. $fileType = 'bmp';
  35. 休憩;
  36. ケース 13780:
  37. $fileType = 'png';
  38. 休憩;
  39. デフォルト:
  40. $fileType = '不明: '.$typeCode;
  41. }
  42. //
  43. を修正 if ($strInfo['chars1']=='-1' AND $strInfo['chars2']=='-40' ) return 'jpg';
  44. if ($strInfo['chars1']=='-119' AND $strInfo['chars2']=='80' ) 'png' を返します。
  45. $fileType を返します。
  46. }
  47. //调用
  48. echo file_type('start.php'); // 6063 または 6033
  49. ?>
卷制暗号

不知道反过来定义 6063 または 6033 は、fingerphp の话は不是不不不达です。

上のコードは、構築された写真のファイルタイプを判断するのに適していません。 この場合、getimagesize を使用して判断することを検討できます。参考コードは次のとおりです。

  1. /**
  2. * getimagesize はファイルタイプを決定します
  3. * bbs.it-home.org を編集します
  4. */
  5. if(in_array($attach['ext'], array('jpg', 'jpeg', 'gif', 'png', 'swf', 'bmp')) && function_exists('getimagesize') && !@getimagesize($target))
  6. {
  7. unlink($target);
  8. Upload_error('post_attachment_ext_notallowed', $attacharray);
  9. }
  10. ?>
复制代

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。