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);
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 サイトの他の関連記事を参照してください。