المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التعامل مع الملفات المرفوعة بوسطة النمازج


MIDO-EGYPT
2009-12-05, 03:50 PM
التعامل مع الملفات المرفوعة بوسطة النمازج

أقرأ بتأنى وطبق ماتقرأة
التعامل مع الملفات المرفوعة الى الموقع بواسطة النمازج
يتم تخزين معلومات الملفات التى يتم رفعها الى الموقع بواسطة النموزج فى مصفوفة مترابطة سابقة الأعداد فى PHP تسمى $_files التى تحتوى على معلومات عن الملفات المرفوعة الى الموقع من خلال النموزج التالى:
$_FILES['fieldname']['name']
$_FILES['fieldname']['type']
$_FILES['fieldname']['tmp_name']
$_FILES['fieldname']['size']
لوفرضنا مثلا انك استخدمت الحقل التالى لرفع الملفات الى الموقع عن طريق النموزج
<inpout type="file"name="user_file">
وقام زائر الموقع برفع ملف الى الموقع يسمى test.txt بأستخدام النموزج ليكون النتيجة هى المصفوفة التالية:
$_FILES[user_file][name] = test.txt
$_FILES[user_file][type] = tex/plain
$_FILES[user_file][tmp_name] = D:\WINNT\php92C.tmp
$_FILES[user_file][size] = 435
واضح من المصفوفة السابقة انها عبارة عن معلومات عن الملف الذى يتم رفعة من زائر الموقع من خلال النموزج حيث العنصر name من عناصر المصفوفة تكون قيمتة عبارة عن اسم الملف والعنصر typ قيمتة عبارة عن نوع الملف والعنصر size قيمتة عبارة عن حجم الملف بالبايت والعنصر tmp_name من عناصر المصفوفة تكون قيمتة عبارة عن المسار المؤقت الذى تم الأحتفاظ فية بالف وهذة المصفوفة التى ذكرت سابقا هى مصفوفة جاهزة يعنى معدة بمعرفة مصمموا لغة php يعنى انا لم اعطى شيئا من عندى ولاتقوم انت بأنشائها وهى من المصفوفات التى تسمى super global arrays والذى انفردت بها php5 والتى يبدأ اسمها بشرطة سفلية
واذا كان الملف الذى حاول زائر الموقع رفعة الى الموقع كبير الحجم بحيث يزيد حجمة عن الحجم الذى قمت انت بتحديدة عند كتابة الاسكريبت الخاص بالنموزج فى الحقل المخفى MAX_FILE_SIZE وبالتالى تعذر رفع الملف الى الموقع لهذا السبب فى هذة الحالة تكون قيمة العنصر temp_name من عناصر المصفوفة تساوى none وتكون قيمة العنصر size هى صفر , وبعد رفع الملف الى الموقع يقوم الاسكريبت الخاص بالتعامل مع البيانات المرسلة الى الموقع بواسطة النموزج كما سبق وان ذكرنا بأخذ صورة من هذا الملف من المكان المؤقت المخزن فية الملف الى المكان الدائم الذى يتم الاحتفاظ فية بالملف لحين أجراء عمليات تشغيل على هذا الملف وبمجرد انتهاء الاسكريبت من العمل يتم الغاء الملف الموجود فى المسار المؤقت , والصيغة العامة التى تستخدم لنقل الملف من المسار المؤقت الى المسار النهائى هى كما يلى
move_uploaded_file(المسار النهائى , المسار المؤقت);
المسار المؤقت موجود ضمن مصفوفة $_FILE والمسار النهائى تقوم انت بتحديدة فى الاسكريبت الذى تقوم بأعدادة للتعامل مع البيانات التى ترسل من زائر الموقع بواسطة النموزج باستخدام جملة مثل
move_uploaded_file($_FILES['user_file']['tmp_name'],
'c:\data\new_file.txt');
فى الجملة السابقة تم تحتديد المسار النهائى للملفات التى يقوم رفعها الى الموقع باستخدام النموزج بالمسار التالى c:\data وهذا المسار يجب ان يكون موجود بالفعل قبل تشغيل الاسكريبت الذى يحتوى على الجملة السابقة التى تقوم بتحديد المسار الذى سيتم حفظ الملفات المرفوعة من زائر الموقع الية حيث هذة الجملة لاتقوم بعمل ملف جديد بهذا الاسم فى هذا المسار
طبعا هناك من يوم برفع ملفات تجسس ولتأمين الموقع من برامج التجسس او اى برامج تضر الموقع او السيرفر المضيف يمكن وضع شروط للملفات التى يتم نقلها الى الموقع عبر النموزج وينصح بتغيير اسم الملف بعد استلامة من النموزج حتى لايستطيع زائر الموقع الذى قام برفع الملف
واليك مثالا كاملا
الاسكريبت التالى يستخدم ليقوم زائر الموقع برفع صورة الى الموقع لايزيد حجمها عن500 كيلوبايت ويقوم الاسكريبت بالتأكد من ان الملف الذى يحاول زائر الموقع رفعة الى الموقع عبارة عن صورة وأن حجمها لايتجاوز 500 كيلوبايت