تحميل ملف PHP: ضمان قيود نوع الملف وحجمه
في PHP، غالبًا ما يتطلب التعامل مع تحميلات الملفات التحقق من قيود نوع الملف وحجمه. يحاول مقتطف الشفرة المقدم التحقق من صحة كلا المعيارين ولكنه يواجه مشكلات. دعونا نتعمق في الكود ونحدد الأخطاء.
//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");
يلتقط هذا الرمز اسم الملف والامتداد لكلا الملفين. ومع ذلك، فإن منطق التحقق اللاحق معيب:
if (!(
($_FILES["resume"]["type"] == "application/doc")
|| ($_FILES["resume"]["type"] == "application/docx")
|| ($_FILES["resume"]["type"] == "application/pdf")
&& (($_FILES["reference"]["type"] == "application/doc")
|| ($_FILES["reference"]["type"] == "application/docx")
|| ($_FILES["reference"]["type"] == "application/pdf"))
&& (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx"))
&& (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx"))
&& ($_FILES["resume"]["size"] فشل الرمز في استخدام المنطق الصحيح للتحقق من صحة أنواع الملفات. بدلاً من التحقق من نوع MIME، فإنه يعتمد على ملحق اسم الملف، وهو غير موثوق. بالإضافة إلى ذلك، لا يتم تطبيق التحقق من الحجم على كلا الملفين.
لتصحيح هذه المشكلات، إليك مقتطف التعليمات البرمجية المنقح الذي يستخدم أنواع MIME ويتحقق بشكل صحيح من حجم الملفين:
function allowed_file() {
$allowed = array('application/doc', 'application/pdf', 'application/docx');
if (in_array($_FILES['resume']['type'], $allowed) && in_array($_FILES['reference']['type'], $allowed)) {
if ($_FILES["resume"]["size"] يتحقق هذا الرمز أولاً مما إذا كانت أنواع MIME للملفات مدرجة في القائمة المسموح بها. إذا كان الأمر كذلك، فإنه يتحقق مما إذا كان كلا حجمي الملف ضمن الحد المحدد. وهذا يضمن قبول أنواع وأحجام الملفات المسموح بها فقط للتحميل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3