Apabila mengesahkan jenis fail yang dimuat naik dalam PHP, bergantung pada $_FILES['fupload']['type'] yang disediakan pengguna adalah berisiko kerana ia boleh dimanipulasi. Kaedah ini boleh menyebabkan ketidakkonsistenan dalam pengendalian ralat.
Untuk mengatasinya, pertimbangkan untuk menggunakan mime_content_type() untuk mendapatkan pengesanan jenis fail yang lebih dipercayai. Walau bagaimanapun, mime_content_type() juga bergantung pada input pengguna sedikit sebanyak.
Untuk pendekatan yang lebih mantap:
$allowedTypes = [IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF]; $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
Kaedah ini mengkaji kandungan sebenar fail yang dimuat naik dan mengesahkan jenisnya berdasarkan fail tersebut tandatangan.
Jika pelayan anda menyokong finfo(), ia menyediakan analisis fail yang lebih komprehensif. Contoh kod berikut menunjukkan penggunaannya:
$mimeTypes = ['image/png', 'image/jpeg', 'image/gif']; $finfo = new finfo(FILEINFO_MIME_TYPE); $mimeType = $finfo->file($_FILES['fupload']['tmp_name']); $error = !in_array($mimeType, $mimeTypes);
Dengan melaksanakan salah satu daripada kaedah ini, anda boleh meningkatkan kebolehpercayaan jenis fail проверки anda dan meningkatkan ketekalan pengendalian ralat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Jenis Fail yang Dimuat Naik dengan Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!