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

مشاهدة النسخة كاملة : كلاسات الphp:الدرس مفصل الرابع: استغلال كلاس رفع الملفات



salima
11-01-2013, بتوقيت غرينيتش 03:58 PM
http://www.dzbatna.com/images/icons/iconrote.gif ظƒظ„ط§ط³ط§طھ ط§ظ„php:ط§ظ„ط¯ط±ط³ ط§ظ„ط±ط§ط¨ط¹: ط§ط³طھط؛ظ„ط§ظ„ ظƒظ„ط§ط³ ط±ظپط¹ ط§ظ„ظ…ظ„ظپط§طھ (http://www.dzbatna.com/t1799658/)






http://www.advphp.com/imgup/images/09872629446750591141.png

نستكمل معكم أخوانى زوار موقعنا الكرام, فبعد الانقطاع المطول نظرا للظروف التى تعرضت لها بلدى الحبيبه مصر, فها أنا أرجع معكم بفضل الله لنستكمل ما بدأنا به,

فى هذا الدرس مفصل سوف نستكمل الجزء الخاص باستغلال الكلاسات الجاهزه,قبل ان نخوض فى دروس كتابة الكلاسات بأنفسنا,وهذا الدرس مفصل هو مثال لاستغلال كلاس جاهزه وهى

كلاس رفع الملفات ,


قبل ان ابدأ , أذكركم بالدروس السابقة فى سلسلة تعلم كلاسات php:



1-كلاسات الphp : الدرس مفصل الأول: الأســـــاســـيات الهامه فى php classes (http://www.advphp.com/phpbeginnerssection/305-php-classes-lesson-1-fundamentals)
2- كلاسات php : خلاصة الأساسيات المهمه ل php classes (http://www.advphp.com/phpbeginnerssection/304-php-classes-lesson1-abstract)
3- كلاسات الphp : الدرس مفصل الثالث: الاستغلال العملى لكلاس قواعد البيانات
(http://www.advphp.com/phpbeginnerssection/307-php-classes-how-to-exploit-db-class)



اولا: حمل ملفات الدرس مفصل من هــــــــــــنـــــــــــــا (http://advphp.com/tuts/classes/less1/uploadclass.rar)



دعونا الأن نرسم خطة وفهرس شرح طريقة الدرس مفصل:



1-شرح طريقة تركيب installة ملف الكلاس upload_class.php
2-شرح طريقة مثال عملى لاستغلال الكلاس لعمل اسكربت لرفع الملفات



الان , انظر لهذا المخطط المبسط لنعرف باختصار فكرة الدرس مفصل :


http://advphp.com/imgup/images/12894306688212245048.png





اولا: شرح طريقة تركيب installة ملف الكلاس 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; }




+فانكشنز كثيره أخرى ...............



ويمكنك الرجوع لكود code الكلاس كاملأ من الملفات المرفقة



الان , عرفنا تركيب installة الكلاس الأساسية والاشياء المهمه فى الكلاس........





ثانيا:شرح طريقة مثال عملى لاستغلال الكلاس لعمل اسكربت لرفع الملفات

سنقوم الان بعمل اسكربت بسيط لرفع الملفات مستغلين هذه الكلاس السابقة



نشوف صورة للاسكربت :

http://advphp.com/imgup/images/32699626736693951560.png



اولا: دعونا نعرف فكرة الاستغلال:


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']
تعنى المجلد الجذر للسيرفر SERVER , يعنى 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); } }


تفسير الكود code السابق:

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

مثال: الجملة joomla السابقة تساوى بالظبط الجمله الاتيه:


رمز 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:
<h3>File upload script:</h3> <p>Max. filesize = <?php echo $max_size; ?> bytes.</p> <form name=&quot;form1&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot; action=&quot;<?php echo $_SERVER['PHP_SELF']; ?>&quot;> <input type=&quot;hidden&quot; name=&quot;MAX_FILE_SIZE&quot; value=&quot;<?php echo $max_size; ?>&quot;><br> <label for=&quot;upload&quot;>Select a file...</label> <input type=&quot;file&quot; name=&quot;upload&quot; size=&quot;30&quot;> <br clear=&quot;all&quot;> <label for=&quot;name&quot;>New name?</label><input type=&quot;text&quot; name=&quot;name&quot; size=&quot;20&quot;> (without extension!) <br clear=&quot;all&quot;> <label for=&quot;replace&quot;>Replace ?</label><input type=&quot;checkbox&quot; name=&quot;replace&quot; value=&quot;y&quot;><br clear=&quot;all&quot;> <label for=&quot;check&quot;>Validate filename ?</label><input name=&quot;check&quot; type=&quot;checkbox&quot; value=&quot;y&quot; checked><br clear=&quot;all&quot;> <input style=&quot;margin-left:120px;&quot; type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Submit&quot;> </form>


http://advphp.com/imgup/images/32699626736693951560.png



بهيك نكون عرفنا بشكل مبسط وخفيف كيفية استغلال كلاس رفع الملفات .........










ترقبوا الدرس مفصل القادم ....
































ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى