Manager مؤسس الموقع
. : بيانات اصافية المشاركات : 285 نقاط : 634 التقييم : 0 الانتساب : 14/01/2011
فيس بوك :
| موضوع: كلاسات الphp:الدرس الرابع: استغلال كلاس رفع الملفات الأربعاء مارس 02, 2011 5:24 am | |
|
نستكمل معكم أخوانى زوار موقعنا الكرام, فبعد الانقطاع المطول نظرا للظروف التى تعرضت لها بلدى الحبيبه مصر, فها أنا أرجع معكم بفضل الله لنستكمل ما بدأنا به,
فى هذا الدرس سوف نستكمل الجزء الخاص باستغلال الكلاسات الجاهزه,قبل ان نخوض فى دروس كتابة الكلاسات بأنفسنا,وهذا الدرس هو مثال لاستغلال كلاس جاهزه وهى
كلاس رفع الملفات ,
قبل ان ابدأ , أذكركم بالدروس السابقة فى سلسلة تعلم كلاسات php:
اولا: حمل ملفات الدرس من هــــــــــــنـــــــــــــا
دعونا الأن نرسم خطة وفهرس شرح الدرس:
1-شرح تركيبة ملف الكلاس upload_class.php 2-شرح مثال عملى لاستغلال الكلاس لعمل اسكربت لرفع الملفات
الان , انظر لهذا المخطط المبسط لنعرف باختصار فكرة الدرس :
اولا: شرح تركيبة ملف الكلاس upload_class.php
كما نرى فى المخطط السابق ان الكلاس هى عبارة عن مجموعة من المتغيرات والفانكشن ......
فى الكلاس سنحدد متغيرات مهمه وهى:
1-متغير خاص باسم الملف المرفوع 2-متغير خاص بالاسم المؤقت للملف المرفوع 3-متغير لمجلد الملف 4-متغير لاعادة تسمية الملف 5-متغير للتحقق من تسمية الملف 6-متغير لتحديد امتداد الملف 7-متغير لتحديد اقصى حجم للملف المرفوع
+متغيرات أخرى ........ رمز Code:var $the_file; //اسم الملف var $the_temp_file; // الاسم المؤقت للملف var $upload_dir; //مجلد الملف var $replace;// لاعادة تسمية الملف المرفوع var $do_filename_check; // التحقق من تسمية الملف var $max_length_filename = 100; var $extensions; // لتحديد الامتدادت
ثم فانكشنزfunctions للتعامل مع الملف المرفوع:
1-فانكشن لرفع الملف function upload
رمز Code:function upload($to_name = "") { $new_name = $this->set_file_name($to_name); if ($this->check_file_name($new_name)) { if ($this->validateExtension()) { if (is_uploaded_file($this->the_temp_file)) { $this->file_copy = $new_name; if ($this->move_upload($this->the_temp_file, $this->file_copy)) { $this->message[] = $this->error_text($this->http_error); if ($this->rename_file) $this->message[] = $this->error_text(16); return true; } } else { $this->message[] = $this->error_text($this->http_error); return false; } } else { $this->show_extensions(); $this->message[] = $this->error_text(11); return false; } } else { return false; } } 2-فانكشن لجلب معلومات الملف المرفوع function get_uploaded_file_info
رمز Code:function get_uploaded_file_info($name) { $str = "File name: ".basename($name)."\n"; $str .= "File size: ".filesize($name)." bytes\n"; if (function_exists("mime_content_type")) { $str .= "Mime type: ".mime_content_type($name)."\n"; } if ($img_dim = getimagesize($name)) { $str .= "Image dimensions: x = ".$img_dim[0]."px, y = ".$img_dim[1]."px\n"; } return $str; }
+فانكشنز كثيره أخرى ...............
ويمكنك الرجوع لكود الكلاس كاملأ من الملفات المرفقة
الان , عرفنا تركيبة الكلاس الأساسية والاشياء المهمه فى الكلاس........
ثانيا:شرح مثال عملى لاستغلال الكلاس لعمل اسكربت لرفع الملفات
سنقوم الان بعمل اسكربت بسيط لرفع الملفات مستغلين هذه الكلاس السابقة
نشوف صورة للاسكربت :
اولا: دعونا نعرف فكرة الاستغلال:
1-تحديد أقصى حجم للملف المرفوع 2-تحديد مكان المجلد الذى سيتم رفع الملفات بداخله 3-تحديد الامتدادت المسموح برفعها 4-تنفيذ ما سيحدث عند الضغط على زر الرفع submit 5-عمل فورم لرفع اللمفات
نتوكل على الله ونبدأ بالاستغلال.........
1-نستدعى ملف الكلاس:
رمز Code:include ("upload_class.php"); 1a-نسوى متغير جديد لاستخدام الكلاس file_upload المجوده داخل ملف الكلاس
رمز Code:$my_upload = new file_upload;2-نحدد اقصى حجم للملف المرفوع
رمز Code:
$max_size = 1024*250; 3-نحدد مكان المجلد الذى سيتم رفع الملفات بداخله :
رمز Code:$my_upload->upload_dir = $_SERVER['DOCUMENT_ROOT']."/upload/files/"; لاحظ: رمز Code: $_SERVER['DOCUMENT_ROOT'] تعنى المجلد الجذر للسيرفر , يعنى www
4-نحدد الامتدادات المسموح برفعها:
رمز Code:$my_upload->extensions = array(".png", ".zip", ".pdf",".rar"); 5-تنفيذ ما سيحدث عند الضغط على زر الرفع submit
رمز Code:if(isset($_POST['Submit'])) { $my_upload->the_temp_file = $_FILES['upload']['tmp_name']; $my_upload->the_file = $_FILES['upload']['name']; $my_upload->http_error = $_FILES['upload']['error']; $my_upload->replace = (isset($_POST['replace'])) ? $_POST['replace'] : "n"; $my_upload->do_filename_check = (isset($_POST['check'])) ? $_POST['check'] : "n"; $new_name = (isset($_POST['name'])) ? $_POST['name'] : ""; if ($my_upload->upload($new_name)) { $full_path = $my_upload->upload_dir.$my_upload->file_copy; $info = $my_upload->get_uploaded_file_info($full_path);
} }
تفسير الكود السابق:
1-سنستخدم الحالة الشرطية لتنفيذ فى حالة تم الضغط على الزر
رمز Code:if(isset($_POST['Submit'])) { ..... .... ...
} 2-نحدد مجلد مؤقت لتخزين الملف المرفوع
رمز Code:$my_upload->the_temp_file = $_FILES['upload']['tmp_name']; ملاحظه: تذكر دالة $_files تستخدم لرفع الملفات والصيغه العامه هى :
رمز Code:$_files['input name']['name or type or size of uploaded file'] 3- نحدد اسم الملف المرفوع
رمز Code:$my_upload->the_file = $_FILES['upload']['name'];4-نحدد ما اذا تم تعليم خيار اعادة تسميه الملف ام لا
رمز Code:$my_upload->replace = (isset($_POST['replace'])) ? $_POST['replace'] : "n"; ملاحظه: تذكر ternary operator المستخدمه فى المثال السابق وهى تحل محل if....else
مثال: الجملة السابقة تساوى بالظبط الجمله الاتيه:
رمز Code:if(isset($_post['replace'])){
$replace=$_POST['replace'];
}
else { $replace=""; }
5-نحدد ما اذا تم كتابة اسم جديد للملف فى خانة اعادة تسمية الملف يتم تنفيذ ذلك , او يتم تركه كما هو بالاسم الاصلى
رمز Code:$new_name = (isset($_POST['name'])) ? $_POST['name'] : ""; 6-ثم نستخدم فانكشن الupload لرفع الملف
رمز Code:if ($my_upload->upload($new_name)) { $full_path = $my_upload->upload_dir.$my_upload->file_copy; $info = $my_upload->get_uploaded_file_info($full_path);
}
7- واخيرا نسوى الفورم الخاص برفع الملفات كما ترونه بالصوره السابقة للاسكربت:
رمز Code:File upload script:
Max. filesize = bytes.
بهيك نكون عرفنا بشكل مبسط وخفيف كيفية استغلال كلاس رفع الملفات .........
ترقبوا الدرس القادم ....
| |
|