النتائج 1 إلى 9 من 9

الموضوع: عند استخدام رفع الملفات هل استخدم $file = $_FILES['file']; بدل $_POST['file'];

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Nov 2003
    المشاركات
    127

    عند استخدام رفع الملفات هل استخدم $file = $_FILES['file']; بدل $_POST['file'];



    السلام عيلكم ورحمة الله

    انا جالس ابرمج كود رفع الملفات

    كما تعلمون ان بعض السيرفات تلزم ان يكون البرنامج يحتوي
    $_POST
    لإستقبال البيانات

    هذا الفورم المستخدم في برنامجي

    كود HTML:
    <form action="" method="post" enctype="multipart/form-data">
    <input name="file" type="file">
    </form>
    والكود البرمجي في البي اتش بي هذا هو

    كود PHP:
    <?php

    copy
    ($file,"$file_name");

    ?>
    وكذا الكود يعمل بشكل سليم عندي

    لاكن كيف استخدم
    $_POST
    في برنامجي ؟

    هل اضيف هذا
    كود PHP:
    <?php
    $file 
    $_POST['file'];

    copy($file,"$file_name");
    ?>
    أو اضيف ها
    كود PHP:
    <?php
    $file 
    $_FILES['file'];

    copy($file,"$file_name");
    ?>

    علماً ان جربت الأثنين ولم يعملون

    ماهي المشكلة وجزاكم الله خير؟







  2. #2


    حسب ما أذكر خلال ممارستي الضئيلة لمثل هذه الأمور :
    كود PHP:
    <?php

          $file 
    $_FILES['file']['tmp_name'];
          
    $x = @copy($file,"$file_name");
          if (
    $x) {
                echo 
    "تم رفع الملف بنجاح";
          } else {
                echo 
    "فشل في رفع الملف";
          }
    ?>
    ان شاء الله يكون صحيح
    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    279


    الاول انتا لم تحدد الصفحة التى بها كود الPHP

    يجب ان تحددها هنا

    لدق كتبت انا Upload.php غيرها انتا الى اسم الصفحة التى بها كود الرفع للملف

    وانصحك اخي من الان ان لا تستخدم دالة copy استخدم الامنة move_uploaded_files

    كود:
    <form action="Upload.php" method="post" enctype="multipart/form-data">
    وايضا اين قيمة المتغير $file_name ؟؟؟؟





    __________________


    Mohamed Mahmoud

    Mobile : +20103452846

    Blog : Hawy PHP

    Mail : Hawy [.] PHP [@] Gmail.com

    حسبي الله ونعم الوكيل


  4. #4
    عضو شرف
    تاريخ التسجيل
    Mar 2003
    المشاركات
    1,899


    وعليكم السلام

    اولا لاتقم باستخدام دالة copy كما قال الاخ هاوي php



    واللي ذكرته عن $file_name فهو خاطئ لايمكنك استخدامها هكذا لان في عملية الابلود هناك متغيرين ثابتين هما
    Filedata و name


    بالنسبه لي استخدام هذه الاوامر وفعاله جدا
    كود PHP:
    <?PHP
    $uploadDir 
    "files/";
    $tmp_name $_FILES['Filedata']['tmp_name'];
    $uploadFile $uploadDir basename($_FILES['Filedata']['name']);
    move_uploaded_file($tmp_name$uploadFile);
    ?>
    تحياتي





    __________________
    محلل لنظم المعلومات - ارسل لي رساله خاصه عبر المنتدى | join me on facebook / twitter
    php | flash&flex&air actionscript 2,3 | ajax&javascript | database pro Analyzer

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    الاخوة كفوا ووفوا .. ولكن احببت ان اضيف نقطة صغيرة .. لمعلوماتك الشخصية

    اولا حري بك ان تعرف انك لا تستطيع وضع value للنوع file ، حاول ان تقوم باضافة value ولن تستطيع .. وذلك حتى لا يتم استخدامها كثغرة لرفع الملفات الغير مرادة


    الآن ..
    ماذا يتم بالضبط عند رفع الملف ؟

    الذي يتم باختصار .. عند الضغط ،
    1- تقوم ال php بتوليد اسم عشوائي للملف ، وتخزينه في مجلد tmp على السيرفر ، وتأخذ بياناته ( مثل الحجم والنوع والاسم الحقيقي للملف والاسم العشوائي الموجود في مجلد tmp )
    2- تقوم بتمرير القيم هذه إليك على المصفوفة $_FILES
    3- العملية التي تقوم انت بها في برمجتك .. ليست عملية ( رفع الملف إلى المجلد الذي حددته ) بل هي عملية ( نقل الملف من مجلد tmp إلى المجلد الذي قمت بتحديده )


    ولذلك لو تلاحظ فان الفنكشن التي قمت باستخدامها تسمى " copy " اي نسخ .. وليس " upload "


    وكما قال اخي MohDesign استخدام الفنكشن move_uploaded_file هو افضل بكثير ..

    اولا : لأن الفنكشن معدة لنقل الملف الذي تم تحميله إلى فولدر tmp بينما copy معدة لنسخ اي ملف على السيرفر إلى مكان آخر .. وطبعا نحن نسعى لتخصيص الوظيفة باكبر شكل ممكن .. وحينها تجد افضل اداء

    ثانيا : لأن الفنكشن move_uploaded_file معدة لاسترجاع اخطاء تفصيلية عن سبب عدم الرفع ، في حالة وجود اخطاء

    ثالثا واخيرا : بسبب ظهور ثغرة امنية في فنكشن copy وقد تم تعديلها في نسخ ال php الحديثة فقط .. بينما تزال الثغرة موجودة في النسخ القديمة



    ملحوظات قد تفيدك :
    بعد رفع الملف .. للتأكد من رفعه يمكنك استخدام الفنكشن :
    كود PHP:
    if (is_uploaded_file($_FILES['fileData']['tmp_name'])) {
    echo 
    'تم الرفع بنجاح';
    }else{
    echo 
    'لم يتم الرفع'

    في حالة " لم يتم الرفع " تقوم بعمل error handling باستخدام
    كود PHP:
    $_FILES['fileData']['error'
    وهذا المتغير او هذا العنصر من المصفوفة يقوم بارجاع واحدة من هذه القيم :
    0 = لا يوجد اي اخطاء وتم الرفع بنجاح
    1 = الملف حجمه اكبر من حجم upload_max_filesize الموجود في ملف php.ini
    2 = الملف حجمه اكبر من حجم post_max_size الموجود في php.ini
    3 = حدث خطأ اثناء الرفع .. مثلا تم قطع الاتصال ، والملف الذي تم تحميله غير كامل ( تم تحميل نصفه فقط مثلا )
    4 = الملف لم يتم تحميله بشكل نهائي قد يكون خطأ من السيرفر او من الملف المحمل
    6 = مجلد ال tmp او المجلد الذي تحاول نقل الملف إليه غير موجود ( والرقم 6 لا يظهر الا في نسختي php 4.3.10 و php 5.0.3 فقط )
    7 = مجلد ال tmp او المجلد الذي تحاول الكتابة اليه ليس مسموح بالكتابة فيه ( لو ال tmp يكون عندك مصيبة بالسيرفر ! )



    واخيرا .. لو قبل الرفع تتأكد ان المجلد مسموح له بالكتابة عليه .. من خلال الفنكشن
    كود PHP:
    if (is_writable("uploads/")){ 
    يكون افضل واعم



    تحياتي





    __________________
    SWF Thumbnail - tweet me

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    193


    أنا بنصحك تستخدم هذا الكود، لأنه بيشتغل على الـ POST و الـ GET

    كود:
    <?
    $params = array("action" => "action");
    while( list($var, $param) = @each($params) )
    {
    	if (!empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]))
    	{
    		$$var = (!empty($HTTP_POST_VARS[$param]) ) ? htmlspecialchars($HTTP_POST_VARS[$param]) : htmlspecialchars($HTTP_GET_VARS[$param]);
    	}
    	else
    	{
    		$$var = "";
    	}
    }
    //
    if ($action)
    {
    	echo "OK";
    }
    else
    {
    	echo "NO";
    }
    ?>
    
    <form action="<?$_SERVER['REQUEST_URI']?>" method="GET">
    <input type="hidden" name="action" value="action">
    <input type="submit" name="snake_eyes" value="Send">
    </form>
    تحياتي للجميع





    __________________
    العزة لله.. والشفاعة لك يا رسول الله
    اللهم ارحم شهداؤنا و كل من قاتل في سبيل الله... آمين
    اللهم انصر المجاهدين المسلمين في كل مكان... آمين

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Nov 2003
    المشاركات
    127


    مشاء الله تبارك الله

    معلومات دسسسسسمة جداً جداً


    والله يجزاكم خير على هالمعلومات والنصائح انا استفدت كثير

    وراح افحفظ هذا الدرس عندي لانه غني بالمعلومات






  8. #8
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    193


    اقتباس المشاركة الأصلية كتبت بواسطة snake_eyes
    أنا بنصحك تستخدم هذا الكود، لأنه بيشتغل على الـ POST و الـ GET

    كود:
    <?
    $params = array("action" => "action");
    while( list($var, $param) = @each($params) )
    {
    	if (!empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]))
    	{
    		$$var = (!empty($HTTP_POST_VARS[$param]) ) ? htmlspecialchars($HTTP_POST_VARS[$param]) : htmlspecialchars($HTTP_GET_VARS[$param]);
    	}
    	else
    	{
    		$$var = "";
    	}
    }
    //
    if ($action)
    {
    	echo "OK";
    }
    else
    {
    	echo "NO";
    }
    ?>
    
    <form action="<?$_SERVER['REQUEST_URI']?>" method="GET">
    <input type="hidden" name="action" value="action">
    <input type="submit" name="snake_eyes" value="Send">
    </form>
    تحياتي للجميع
    أكيد انت إذا بدك تجرب هذا الكود إذا بيشتغل صح أو لأ... غير الـ method type للـ form وإلى post و إكيد رح يعمل بنفس الطريقة

    تحياتي لك





    __________________
    العزة لله.. والشفاعة لك يا رسول الله
    اللهم ارحم شهداؤنا و كل من قاتل في سبيل الله... آمين
    اللهم انصر المجاهدين المسلمين في كل مكان... آمين

  9. #9


    ماشاءالله عليكم يا شباب ..
    تعاون رائع










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
اعلانات سوالف
0
أضف موقعك هنا | نسائم نيوز