• php
  • 3583
  • 6-7-2008
  • ابوطارق
  • عن طريق هذا السكريبت سوف تتمكن من رفع الملفات من جهازك إلى موقعك. الكود التالي احفظه في ملف (upload.php) أو أي ملف آخر
    ثم تأكد من وجود مجلد images في نفس الدليل
    <?php
    echo \"<html>\";
    //مجلد رفع الملفات
    $upload_dir = \"images/\"; //51200 bytes = 50KB
    $size_bytes = 51200; //حجم الملف بالبايت //هل تريد تحميل ملفات من نوع معين yes/no
    $extlimit = \"yes\";
    //أنواع الملفات المسموحة
    $limitedext = array(\".gif\",\".jpg\",\".png\",\".jpeg\"); //يقوم بفحص إذا كان كان مجلد التحميل موجود أم لا
    if (!is_dir(\"$upload_dir\")) { die (\"المجلد <b>($upload_dir)</b> غير موجود!\");
    }
    //يقوم بفحص اذا كان مجلد التحميل قابل للكتابة
    if (!is_writeable(\"$upload_dir\")){
    die (\"المجلد <b>($upload_dir)</b> غير قابل للكتابة أعطه ترخيص 777\");
    } if($uploadform) // اذا تم الضغط على زر حمل الملف
    {//($uploadform) بداية.
    //فحص اذا تم اختيار ملف.
    if (!is_uploaded_file($_FILES[\'filetoupload\'][\'tmp_name\']))
    {
    echo \"خطأ: لم تقم باختيار ملف\";
    exit(); //الخروج من السكربت
    } //تعريف متغير يحمل حجم الملف
    $size = $_FILES[\'filetoupload\'][\'size\'];
    //فحص حجم الملف
    if ($size > $size_bytes)
    {
    $kb = $size_bytes / 1024;
    echo \"حجم الملف كبير. يجب أن يكون <b>$kb</b> KB. <br>\";
    exit();
    } //فحص نوع امتداد الملف
    $ext = strrchr($_FILES[\'filetoupload\'][name],\'.\');
    if (($extlimit == \"yes\") && (!in_array($ext,$limitedext))) {
    echo(\"امتداد الملف خطأ!\");
    exit();
    } // تعريف متغير يحمل اسم الملف
    $filename = $_FILES[\'filetoupload\'][\'name\'];
    // Check if file is Already EXISTS.
    if(file_exists($upload_dir.$filename)){
    echo \"الملف <b>$filename </b>موجود مسبقا!!!\";
    exit();
    } //الدالة التالية تقوم بنقل الملف من الى السيرفر
    if (move_uploaded_file($_FILES[\'filetoupload\'][\'tmp_name\'],$upload_dir.$filename)) { //طباعة رسالة نجاح التحميل
    echo \"الملف(<a href=$upload_dir$filename>$filename</a>) تم رفعه بنجاح\";
    exit(); }
    // طباعة رسالة خطأ في حالة فشل عملية رفع الملف
    else
    {
    //رسالة الخطأ
    echo \"حدث خطأ غير معروف أثناء تحميل الملف، الرجاء المحاولة مرة أخرى.\";
    exit();
    } }//if($uploadform) نهاية. #---------------------------------------------------------------------------------#
    // اذا لم يتم ضغط زر حمل الملف قم باظهار النوذج
    else
    {//else بداية ?>
    <br>
    <h3>::استعرض ملف من أجل التحميل:</h3>
    <i>- يمكن رفع أنواع:</i> <b>

    <?
    // طباعة امتداد الملف
    for($i=0;$i<count($limitedext);$i++) { if (($i<>count($limitedext)-1))$commas=\", \";else $commas=\"\"; list($key,$value)=each($limitedext); echo $value.$commas; } ?> </b> <br>
    <i>- أقصى حجم للملف هو</i> = <b><?echo $size_bytes / 1024; ?> KB </b>
    <br>
    <form method=\"post\" enctype=\"multipart/form-data\" action=\"<?php echo $PHP_SELF ?>\">
    <br>
    <input type=\"file\" name=\"filetoupload\"><br>
    <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"<?echo $size_bytes; ?>\">
    <br>
    <input type=\"Submit\" name=\"uploadform\" value=\"حمل الملف\">
    </form> <? }//else نهاية
    ?>
    ?>
    تم استخدام متغير $_FILES وهو ضمن الاصدار 4 من php فما فوق. هذه الدالة تعني حجم الملف
    $_FILES[\'upload\'][\'size\']

    وهذه تحمل اسم الملف المؤقت وقت التحميل
    $_FILES[\'upload\'][\'tmp_name\']

    وهذه تحمل اسم الملف الفعلي
    $_FILES[\'upload\'][\'name\']

    وهذه لنوع الملف
    $_FILES[\'upload\'][\'type\']
    1- (!is_dir(\"$upload_dir\"))

    هذه الدالة تقوم بفحص اذا كان المجلد موجود أم لا
    2- (!is_writeable(\"$upload_dir\"))

    هذه الدالة تقوم بفحص اذا كان المجلد يقبل الكتابة أم لا.
    3- (!in_array($ext,$limitedext))) {

    هذه الدالة تفحص امتداد الملفات مثل jpg zip exe وغيرها .
    4- (file_exists($upload_dir.$filename))

    تقوم بفحص اذا كان الملف موجود مسبقا أم لا
    5- (move_uploaded_file($_FILES[\'filetoupload\'][\'tmp_name\'],$upload_dir.$filename))

    تقوم بنقل بنسخ الملف ورفعه الى السيرفر. move_uploaded_file(\'الملف المصدر\',\'المكان الهدف\')
    move_uploaded_file(\'المكان الهدف\',\'الملف المصدر\')

    ===========

    وهذا رد لأحد الأخوه تعقيبا على الكود السابق السلام عليكم طريقة التحقق ههذ لييست أمنة أبدا :
    $limitedext = array(\".gif\",\".jpg\",\".png\",\".jpeg\");
    والأفضل استخدام الـ mimy type
    $ftype= $_FILES[\'filup\'][\'type\'];

    $allowed_extensions = array (
    \"image/pjpeg\",
    \"image/gif\",
    \"image/x-png\",
    \"application/x-zip-compressed\"
    );

    if ((!in_array( $ftype , $allowed_extensions )) ) {
    $err= \"نوع الملف الأصلي <br><font color=red>$ftype</font><br>غير مصرح به\";
    }
    والله ولي التوفيق
    عدد المقيّمين 3 وإجمالي التقييمات 15
    12345