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