بسم الله الرحمن الرحيم
انا قولت اعرفكم حاجة من لغات البرمجة ازاى ابقى دكتور ومش تتعلمو اى حاجة فيها برمجة تعملوها باديكم فجبت مثال بصيط وهوة مركز رفع ازاى نعملة php و طبعا سكريبت الـ Upload هذا بسيط لدرجة أنه لا يحتوي على أي مميزات غير الـ Upload ، و لا يحتوي حتى على واجهة أو تصميم ، لأن الغرض منه تعليمي فقط .. و تستطيع تطوير السكريبت كما تشاء ..
بعد هذه المقدمة أقول :
أننا سوف ننشئ ملفّين ، أحدهما هو ملف الكونفيق ( Config.php ) و الآخر هو ملف الأبلود ( Upload.php ).
ملف الكونفيق سيحتوي فقط على المسار الذي سنرفع ملفاتنا إليه ( بمعنى أنه سيكون سطر واحد فقط ، اذا استثنينا وسمي <? و ?> .. )
قد يتساءل احدكم لماذا لا نستغني عن ملف الكونفيق و نضع المسار في نفس ملف upload.php ..
الإجابة هي : لأننا سنطوّر السكريبت مستقبلاً بحيث يحتوي على مميزات كثيرة مثل : تخصيص حجم و نوع الملفات المراد رفعها ، إلخ ..
حالياً هذا شكل ملف الكونفيق :
كود:
$path = "C:\mixxatk";
// اخترت رفع الملف إلى مجلد مكساتك في السي
?>
ملف الـ upload.php سيحتوي على ما يلي :
1 ) وسم بداية كود الـ PHP .
2) استدعاء ملف الكونفيق اللي يحتوي المسار
كود:
include "config.php";
?>
3) إدراج النموذج (الفورم) الخاص باستعراض الملفات لتحميلها و أيضاً نحتاج إلى زر خاص بالتحميل كما يلي :
كود:
echo "<form method=\"POST\"
action=\"$PHP_SELF?upload=uploading\"
enctype=\"multipart/form-data\">
<input type=file name=file size=30><br><br>
<button name=\"submit\" type=\"submit\">
تحميل</button></form>";
?>
طبعاً في هذا الجزء من الكود بعض الغوض ، لذا سأشرحه .
إستخدمنا المتغيّر PHP_SELF$ ، و هذا المتغيّر مبني داخل لغة PHP ووظيفته إرجـاع رابط السكريبت الحالي . إذن نحن في خانة الـ action سنقوم باسترجـاع الرابط الحالي الذي نعمل عليه ثم نضيف إليه upload=uploading؟ .
حيث أن upload و uploading متغيّرات عادية سأقوم بتعريفها لاحقاً .
لاحظوا إننا في هذا النموذج عرّفنا المتغيّرات التالية :
upload -- uploading -- file
الخطوات التـالية
4) الآن نصل إلى نقطة هامة و هي ما ذا يجب أن يفعل السكريبت بعد اختيار المستخدم للملف الذي يريد تحميله ، و ضغطه على زر "تحميل" ؟
السكريبت في هذه الحالة سيختبر الملف ، إذا تم نسخه بشكل صحيح فيسيتم طبـاعة "تم تحميل الملف بنجاح" ، أما إذا لم يتم نسخه بشكل صحيح ستظهر الرسالة "لم تختر الملف بشكل صحيح" ، السبب في الخطأ يعود ربما لخطأ في اختيار الملف المراد تحميله أو من هذا القبيل .
لعمل ذلك سنحتاج الى وضع متغيّر بإسم result$ و نسند له عبارة "تم تحميل الملف بنجاح" ، دون أن نطبع هالرسالة .
كود:
$result = "تم تحميل الملف بنجاح !!";
?>
بعد ذلك نحاول رفع الملف ، إذا تم رفعه بنجاح ستبقى قيمة result$ كما هي ، وإذا كان مشكلة في عملية النسخ سنقوم بتغيير قيمة المتغير result$ لتكون : "لم تختر الملف بشكل صحيح" ، الدالّة التي سنستخدمها لرفع الملفات هي copy و سنضيف قبلها علامة @ لكي نتفادى رسائل التحذير ..
كود:
@copy($file, "$path/$file_name")
or $result ="لم تختر الملف بشكل صحيح";
?>
كما تلاحظون فدالة الـ copy تاخذ اسم الملف ، الذي عرفناه في النموذج العلوي -- و تاخذ أيضا مسار الملف .
file$ ---> قمنا بتعريفه في النموذج الأول .
path$---> مسار الملف ، و حددناه في الكونفيق .
file_name$ --> هذا المتغيّر يتم إنشاؤه بشكل تلقائي و يحمل اسم الملف الذي نريد نرفعه .
الآن نطبع قيمة result$ و هي إما نجاح عملية التحميل أو فشلها كما يلي :
5) نغلق الوسم الخاص بالسكريبت .
الآن السكريبت جاهز ، لكنه يحتوي على مشكلة بدائيّة ، و هي أنه في حالة إما نجاح أو فشل التحميل ، فسوف تظهر نفس الصفحة التي تطلب اختيار الملف المراد تحميله ، و زر التحميل ، و تحت النموذج ستشاهد عبارة النجاح أو الفشل. المطلوب الآن إننا فقط نعرض عبارة نجاح أو فشل دون عرض الفورم الخاص بالتحميل .
لعمل ذلك نحتاج إلى أداة الشرط switch ، نتأكد من خلالها أن المستخدم قد ضغط على زر التحميل ( يعني إن upload=uploading ) ، في هذه الحالة سنستخدم الخطوات المذكورة في الخطوة 4 ، عدا ذلك لا نستخدمها .
كود:
switch ($upload)
{
default:
// الآن استخدم الخطوات من 1 إلى 3
break; // و تجاهل أي خيار أو شرط آخر switch هذا لقطع الأمر
case "uploading": // upload=uploading يعني إذا
// نفذ الخطوة 4
break;
}
// الآن نستخدم الخطوة 5
?>
كدة نكون عملنا اول مركز رفع من صنع اديكم
بارك الله فيكم ورعاكم
اخوكم
دكتور كمال محمد محمد