™®±§•£‡ـ ( Impossible ـ2ـ Mission ) ـ¦‡£•§±®™


غْـِـِـِيْـِـِـِر مُـِـِـِسَـِـِـِِجَـِـِـِل

لأنـنـآ نـعـشـقِ التـميز والـِمُـِمَـِيّـزِيْـטּ يشرفنـآ إنـظمـآمڪ معنـآ فيـﮯ مـنـتـديـآت Impossible ـ2ـ Mission

أثبـت تـوآجُـِدڪ و ڪـטּ مـטּ [ الـِمُـِمَـِيّـزِيْـטּ ..!

لـِڪي تـسـتـطـيـع أن تُـِتْـِِבـفَـِنَـِـِا [ بـِ موآضيعـڪ ومشارڪاتـڪ معنـِـِـِآ ]

(بالضعط على تسجيل)


™®±§•£‡ـ ( Impossible ـ2ـ Mission ) ـ¦‡£•§±®™
 
الرئيسيةالبوابةالتسجيلدخولمركز تحميلنا
السلام عليكم ورحمة الله وبركاته

اولا نأسف من اعضائنا الكرام لأنقطاعنا عنكم ..

والان عدنا بحلة جديدة .....
1- تم تطوير المنتدى و تعديل نسخته لخدمتكم بأفضل الاشكال .
2- تم تعديل الدزاين الى شكل اجمل.
3- تم تغير اسم المنتدى.
4- تم انشاء منتدى جديد ( منتدى عام مختص بشؤن الهكر و الاختراق ) .
ملاحضات : المنتدى الجديد على الرابط التالي : www.m-i-1.moontada.net
- المنتدى ليس فقط للأختراق و الهكرز .. بل هو عام مختص بشؤن المرأة من جميع النواحي.
- مواضيع عامة
-صور كريكاترية .. الخ
و المزيد المزيد...

الدزاين :: TuRbO HaCkEr شيح الهكر

تقبلوا تحيات الادارة ... : : ...
شيخ الهكر
TuRbO HaCkEr
صلاح الدين

شاطر | 
 

 التعلم كيف تكون مساحه خاصه لك

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
صلاح الدين
الاداره العامه
الاداره العامه
avatar

ما هي مهنتك : طباخ
اوسمتي :


من اي بلد انت : العراق بلد الخير
احترامي للقوانين : ممتاز
نبذه عن حياتك : حياتي عباره عن شي ماساوي لولا هذا المنتدى واصدقاء لي به لاكان الان في القبر انا من شده البكاء
هل لديك صديق هنا : نعم الكل
ما اسباب تسجيلك ما اسباب تسجيلك : لاني احب الصدقاء ولا اتخلى عنهم
قوه الذكاء : ممتازه جدا خارقه عامه منظمه ذات قوه غريبه
ذكر الابراج : الثور الأبراج الصينية : الحصان
عدد المساهمات : 1181
نقاط : 1020798
كم تحبوني صوتي لي : 11
تاريخ الميلاد : 19/05/1990
تاريخ التسجيل : 14/11/2010
العمر : 27
الموقع : اعشق الوطن واعشق من فيه لا اله الا هو عالم من فيه

بطاقة الشخصية
lave:

مُساهمةموضوع: التعلم كيف تكون مساحه خاصه لك   الأحد ديسمبر 26, 2010 2:33 am

[PHP/MySQL] رفع و تنزيل الملفات بإستخدام قواعد البيانات
مدرج تحت قسم: دروس
8 سبتمبر 2007

السلام عليكم ورحمة الله و بركاته
بحثت عن دروس لكيفية رفع الملفات بقاعدة البيانات فلم أجد درساً مفيداً واحداً!! فقررت كتابته بنفسي لكم.

بدرسنا اليوم سنتعلم كيفية رفع و تنزيل الملفات إلى قاعدة بيانات من نوع MySQL بإستخدام php.

العمل ينقسم على 4 خطوات

1. زرع كود جدول الملفات بقاعدة البيانات
2. ملف upload.html و يحتوى على الفورم الخاص بإختيار الملف
3. ملف upload.php و يحتوى على اكواد رفع الملف لقاعدة البيانات
4. ملف download.php و يحتوى على اكواد تنزيل الملف من قاعدة البيانات

أولاً: زرع الجدول بقاعدة البيانات
view source
print?
1.CREATE TABLE `files` (
2.`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
3.`filename` VARCHAR(250) NOT NULL ,
4.`content` MEDIUMBLOB NOT NULL ,
5.`filesize` INT(20) NOT NULL ,
6.`filetype` VARCHAR(100) NOT NULL ,
7.PRIMARY KEY (id)
8.)

نزرع الكود من الـphpmyadmin.

بهذا الكود أنشأنا جدول باسم files يحتوى على:
id: رقم الملف بقاعدة البيانات (مفتاح اساسى للصفوف)
filename: اسم الملف و إمتداده
content: الملف
filesize: حجم الملف بالبايت
filetype: الـMimetype للملف
ثانياً: ملف upload.html

غرضنا من الملف هو عرض فورم رفع الملفات ساضع لك كود الفورم و لا تنسى وضع اكواد الـhtml الاساسية>
view source
print?
1.

2.من فضلك اختر ملف ليتم رفعه


3.


ولا تنسوا وضع
view source
print?
1.enctype="multipart/form-data"

فى خصائص الفورم لان من دونها لن يتم رفع الملف.

الآن انتهينا من ملف upload.html.
ثالثاً: ملف upload.php المختص برفع الملفات إلى قاعدة البيانات

الإتصال بقاعدة البيانات
view source
print?
1.$connection = mysqli_connect('localhost','root','','files') or die("فشل الإتصال بقاعدة البيانات");

بهذا الكود قمنا بوضع الإتصال بمتغير و هو connection، إذا فشل الإتصال يخرج البرنامج بالرسالة “فشل الإتصال بقاعدة البيانات”

التأكد من تعيين ملف فعلاً ليتم رفعه
view source
print?
1.if ( !isset($_FILES['File']) )
2.{
3.echo"location.href='upload.html'";
4.}

بهذا الكود نفحص أولاً عدم وجود المفتاح File بالمصفوفة $_FILES بإستخدام الدالة isset، إن لم يتم العثور على المفتاح فيقوم بالرجوع لصفحة الرفع upload.html، وإذا تم العثور على الملف نخرج معلوماته.
view source
print?
1.else
2.{
3.$file_name = $_FILES['File']['name'];
4.$file_name = str_replace(" " , "_" , $file_name);

بهذا الكود اخرجنا اسم الملف ثم استخدمنا الدالة str_replace لإستبدال المسافات(” “) بـ(”_”) لأنه إذا تم إيجاد مسافة باسم الملف فيفشل تنزيله عندما تحمله من القاعدة لجهازك.

والآن نستخرج الحجم ونضعه بالمتغير file_size.
view source
print?
1.$file_size = $_FILES['File']['size'];

بهذا الكود استخرجنا حجم الملف.

والآن نستخرج الـMime Type و نضعه بالمتغير file_type.
view source
print?
1.$file_type = $_FILES['File']['type'];

والآن موعد اهم جزء وهو إستخراج محتوى الملف نفسه

تحديد الملف على السيرفر ونضعه بالمتغير file_cnt.
view source
print?
1.$file_cnt = $_FILES['File']['tmp_name'];

ولكننا لا نستطيع رفع ملف بقاعدة البيانات على هذا الاساس! يجب علينا ان نرفع محتويات الملف و ليس الملف.

إذن ماذا نفعل؟؟

نفتح الملف المؤقت على السيرفر للقراءة ثم نخرج منه المحتويات و نخزنها بمتغير ثم نغلق الملف المؤقت. وهذا ما سنفعله بهذا الكود.
view source
print?
1.$file = fopen($file_cnt,'r');
2.$content = fread($file,$file_size);
3.fclose($file);

كما رأينا أولاً المتغير file و هو متغير لفتح الملف بإستخدام الدالة fopen، اما المتغير content فهو المتغير الذي يحتوى على محتويات الملف بإستخدام الدالة fread، ثم اغلقنا الملف بإستخدام الدالة fclose.

الآن ندخل الملف بقاعدة البيانات.
view source
print?
1.$file_insert = mysqli_query($connection,"
2.INSERT INTO `files` (id,filename,content,filesize,filetype)
3.VALUES('NULL', '".addslashes($file_name)."', '".addslashes($content)."', '".$file_size."', '".$file_type."')
4.");

نتأكد من إدخال الملف.
view source
print?
1.if ( $file_insert )
2.{

إذا تم إدخاله ماذا نفعل ؟ نخرج برسالة تقول “تم تحميل الملف بنجاح , للتحميل اضغط هنا”

ولكن قبل ذلك علينا ان نخرج رقم id الملف بقاعدة البيانات لأن ملف التحميل download.php يحتاج الid حتى يستطيع تحميل الملف. نخرج الid بإستخدام الدالة mysqli_insert_id.
view source
print?
1.$file_id = mysqli_insert_id($connection);

الآن نخرج برسالتنا
view source
print?
1.echo 'تم رفع الملف بنجاح ,
2.
3.للتحميل اضغط هنا
4.
5.';
6.}

وإذا لم يتم رفع الملف؟ نخرج له برسالة “فشل رفع الملف”
view source
print?
1.else
2.{
3.echo'فشل رفع الملف ,
4.';
5.}

وبذلك نكون انتهينا من ملف upload.php. وهذا هو كود ملف upload.php كاملاُ.
view source
print?
01.$connection = mysqli_connect('localhost','root','','files') or die("فشل الإتصال بقاعدة البيانات");
02.if ( !isset($_FILES['File']) )
03.{
04.echo"location.href='upload.html'";
05.}
06.else
07.{
08.$file_name = $_FILES['File']['name'];
09.$file_name = str_replace(" " , "_" , $file_name);
10.$file_size = $_FILES['File']['size'];
11.$file_type = $_FILES['File']['type'];
12.$file_cnt = $_FILES['File']['tmp_name'];
13.$file = fopen($file_cnt,'r');
14.$content = fread($file,$file_size);
15.fclose($file);
16.
17.$file_insert = mysqli_query($connection,"
18.INSERT INTO `files` (id,filename,content,filesize,filetype)
19.VALUES('NULL', '".addslashes($file_name)."', '".addslashes($content)."', '".$file_size."', '".$file_type."')
20.");
21.
22.if ( $file_insert )
23.{
24.$file_id = mysqli_insert_id($connection);
25.echo 'تم رفع الملف بنجاح ,
26.
27.للتحميل اضغط هنا
28.
29.';
30.}
31.else
32.{
33.echo'فشل رفع الملف ,
34.';
35.}
36.
37.}

الآن موعدنا مع آخر ملف و هو download.php و هو لتحميل الملفات من قاعدة البيانات.
رابعاً: ملف download.php المختص بتحميل الملفات من قاعدة البيانات

أولاً الإتصال و تخزين الإتصال بالمتغير connection
view source
print?
1.$connection = mysqli_connect('localhost','root','','files') or die("فشل الإتصال بقاعدة البيانات");

ثانياً تعريف المتغير id و الذي يحتوى على الـid للملف المراد تحميله
view source
print?
1.$id = intval($_GET['id']);

كما رأينا .. يأخذ قيمته من قيمة المفتاح id بالمصفوفة $_GET

ثالثاً نتأكد من وجود قيمة بالمتغير id لأنها إن كانت خالية فلن يقوم بشئ
view source
print?
1.if ( empty($id) )
2.{
3.}

كما رأينا نتأكد من خلال الدالة empty وإن كانت القيمة خالية فلن يفعل شئ. و إن تم إيجاد قيمة ؟
view source
print?
1.else
2.{

نتأكد من وجود ملف برقم الـid (القيمة) بقاعدة البيانات.

نستعلم عن الملف ونضع الإستعلام بالمتغير file.
view source
print?
1.$file = mysqli_query($connection,"SELECT * FROM `files` WHERE id='".$id."'");

نتأكد من عدد الصفوف التي وجدها الإستعلام بإستخدام الدالة mysqli_num_rows
view source
print?
1.$check = mysqli_num_rows($file);

ووضعنا النتيجة بالمتغير check إن كانت النتائج = 0، إذن الملف المطلوب غير موجود.
view source
print?
1.if ( $check == 0 )
2.{
3.}

بمثالنا هذا انا لا افعل شئ عند عدم إيجاد الملف، لكن من الممكن ان تكتب رسالة خطأ , كما تريد. وإذا تم إيجاد نتائج ؟ نحمل الملف.
view source
print?
1.else
2.{

نضع جميع مفاتيح و قيم الصف الذي تم العثور عليه بمصفوفة و نخزنه بالمتغير row بإستخدام الدالة mysqli_fetch_array.
view source
print?
1.$row = mysqli_fetch_array($file);

الآن نضع كل مفتاح بالمصفوفة بمتغير باسمه بإستخدام الدالة extract.
view source
print?
1.extract($row);

الآن نعرف الـheaders
1 – المساحة
view source
print?
1.header("Content-length: ".$filesize."");

2 – الMime type
view source
print?
1.header("Content-type: ".$filetype."");

3 – التحميل باسم الملف
view source
print?
1.header("Content-Disposition: attachment; filename=".stripslashes($filename)."");

4 – إستدعاء محتويات الملف لتكون هى المحتويات التي سيتم تحميلها سنستخدم الدالة print أو echo وستحل اى منهم الآن بمحل الدالة readfile و استغنينا عن readfile لأنها بمعظم الاحيان تسبب اخطاء.
view source
print?
1.print $content;
2.}
3.}

وبذلك نكون انتهينا من ملف download.php. الكود كامل.
view source
print?
01.$connection = mysqli_connect('localhost','root','','files') or die("فشل الإتصال بقاعدة البيانات");
02.
03.$id = intval($_GET['id']);
04.if ( empty($id) )
05.{
06.}
07.else
08.{
09.$file = mysqli_query($connection,"SELECT * FROM `files` WHERE id='".$id."'");
10.$check = mysqli_num_rows($file);
11.if ( $check == 0 )
12.{
13.}
14.else
15.{
16.$row = mysqli_fetch_array($file);
17.extract($row);
18.header("Content-length: ".$filesize."");
19.header("Content-type: ".$filetype."");
20.header("Content-Disposition: attachment; filename=".stripslashes($filename)."");
21.print $content;
22.}
23.}

وبذلك نكون انتهينا من جميع الملفات.

ملاحظة على مصفوفة $_FILES
المصفوفة $_FILES
لنفترض اننا رفعنا ملف بإستخدام form فإن المصفوفة $_FILES تخزن اسم الملف(name) و نوع الملف(type) و حجم الملف(size) و الملف المؤقت على السيرفر(tmp_name).

للكاتب Khaled-F
ما هو التالي؟

بما أنك قد وصلت إلى النهاية، ربما تكون قد أحببت المقال وأردت المزيد:

شبـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــكه العراق المجــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــروح



الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://kingdom-12.hooxs.com
الفارس
عميد
عميد
avatar

من اي بلد انت : العراق بلد الخير
احترامي للقوانين : ممتاز
ما اسباب تسجيلك ما اسباب تسجيلك : احبكم
قوه الذكاء : فضيعه
ذكر عدد المساهمات : 21
نقاط : 12833
كم تحبوني صوتي لي : 1
تاريخ التسجيل : 16/11/2010

بطاقة الشخصية
lave:

مُساهمةموضوع: رد: التعلم كيف تكون مساحه خاصه لك   السبت أبريل 02, 2011 7:43 pm

والله المواضيع رهيبه انشاء الله دومكم هيج الى احسن واحسن
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
التعلم كيف تكون مساحه خاصه لك
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
™®±§•£‡ـ ( Impossible ـ2ـ Mission ) ـ¦‡£•§±®™ :: قسم البرامج والابرمجيات :: شرح على الحاسوب والنت-
انتقل الى: