ホームページ > バックエンド開発 > PHPチュートリアル > アップロードの問題を防ぐために、PHP でファイルの種類を確実に検出するにはどうすればよいですか?

アップロードの問題を防ぐために、PHP でファイルの種類を確実に検出するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-30 09:49:10
オリジナル
697 人が閲覧しました

How Can I Reliably Detect File Types in PHP to Prevent Upload Issues?

PHP でのファイル タイプの検出: アップロードの問題のトラブルシューティング

$_FILES['fupload' を使用して画像ファイル タイプを検証するときに問題が発生しました]['タイプ']。この方法が信頼できない可能性があることを示す、一貫性のないエラー メッセージがユーザーから報告されています。

ファイル タイプを正確に検出するには、別のアプローチを検討してください。

mime_content_type を使用する

使用するための提案mime_content_type($_FILES['fupload']['type']) は部分的に正しいです。ただし、ユーザーが指定した値 (つまり、ファイルの MIME タイプ) のみに依存することはお勧めできません。ユーザーはこの情報を簡単に操作できます。

より信頼性の高い方法

画像ファイルの場合、型検証に推奨される方法は、次のように exif_imagetype 関数を使用することです。

$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);
ログイン後にコピー
  • exif_imagetype は検出された画像タイプを返します(例:IMAGETYPE_PNG)
  • $allowedTypes 配列は、許容可能な画像タイプを定義します
  • $error 変数は、ファイル タイプが許可されない (True) か有効な (False) かを示します

finfo の使用関数

サーバーが finfo 拡張子をサポートしている場合は、finfo_file などの関数を利用して、MIME タイプやその他の属性を含む詳細なファイル情報を取得できます。

$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $finfo->file($_FILES['fupload']['tmp_name']);
$error = ($mime_type != 'image/gif' && $mime_type != 'image/png' && $mime_type != 'image/jpeg');
ログイン後にコピー

これらを使用することにより、メソッドを使用すると、ファイルの種類を確実に検証し、ファイルのアップロード中の予期しないエラーを防ぐことができます。

以上がアップロードの問題を防ぐために、PHP でファイルの種類を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート