اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته... كيفكم... فيه عندي select فيه خيارات 2 الخيار الأول عندما يتم اختياره سيظهر حقل صوره .. والخيار الثاني عندما يتم اختياره سيظهر حقل ارسال صوره... عملت ذالك عن طريق سكربت والأمر شغال ومافيه مشكله.....     لكن لكن لكن..... حدث لي مشكله لما يتم اختيار كلمة الصورة الأولى او كلمة الصورة الثانية الموجودة في select تطبع عندي في جدول.... هيك. الصورة الأولى $...... يعني علامة الدولار تظهر عندما يتم اختيار وارسال الكلمة الأولى او ثانيه... علمآ ال value مافيها علامة $ ولا حتى بين اقواس الابوشن..... اذا ممكن المساعده....    علمآ SHU هو اسم العامود الذي ستظهر فيه كلمات الخيارات وال file اسم عامود ثاني تظهر فيه الصوره الذي سيتم ارسالها بعد اختيار الخيار الثاني 

 

 

 

 

             

if ($_SERVER["REQUEST_METHOD"] == "POST") {
       $option = $_POST["SHU"];
       $targetDir = "img/";
       $uploadOk = 1;}
   
       if ($option == "الصورة الاولى" && isset($_FILES["file"])) {
           $targetFile = $targetDir . basename($_FILES["file"]["name"]);
           $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
       
           if ($_FILES["file"]["size"] > 20000) {
               echo "عذراً، حجم الملف كبير جداً.";
               $uploadOk = 0;
           }
   
           $check = getimagesize($_FILES["file"]["tmp_name"]);
           if ($check === false){
               echo "الملف ليس صورة.";
               $uploadOk = 0;
           }

           if ($uploadOk == 1) {
            if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) 
            echo "تم رفع الملف ";}

             }
             
             
              elseif ($option == "الصورة الثانية" && isset($_FILES["file2"])) {
           $targetFile = $targetDir . basename($_FILES["file2"]["name"]);
         
           $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
   
           if ($_FILES["file2"]["size"] > 10000) {
               echo "عذراً، حجم الملف كبير جداً.";
               $uploadOk = 0;
           }
   
           $check = getimagesize($_FILES["file2"]["tmp_name"]);{
           if ($check === false) 
               echo "الملف ليس صورة.";
               $uploadOk = 0;
           } 

    
            if ($uploadOk == 1) {
                if (move_uploaded_file($_FILES["file2"]["tmp_name"], $targetFile)) 
                echo "تم رفع الملف ";}
            }

 

Recommended Posts

  • 0
نشر

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

المشكلة هنا قد تكون ناتجة عن عدم تنقية المدخلات (inputs) بشكل صحيح ففي حالة وجود أي رموز غير متوقعة مثل "$" من المهم التأكد من أن المدخلات لا تحتوي على أي رموز قد تؤثر على النتيجة.

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // تنقية المدخلات من أي رموز غير متوقعة
    $option = htmlspecialchars($_POST["SHU"], ENT_QUOTES, 'UTF-8');
    $targetDir = "img/";
    $uploadOk = 1;

    if ($option == "الصورة الاولى" && isset($_FILES["file"])) {
        $targetFile = $targetDir . basename($_FILES["file"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        if ($_FILES["file"]["size"] > 20000) {
            echo "عذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
        }

        $check = getimagesize($_FILES["file"]["tmp_name"]);
        if ($check === false) {
            echo "الملف ليس صورة.";
            $uploadOk = 0;
        }

        if ($uploadOk == 1) {
            if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
                echo "تم رفع الملف ";
            }
        }
    } elseif ($option == "الصورة الثانية" && isset($_FILES["file2"])) {
        $targetFile = $targetDir . basename($_FILES["file2"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        if ($_FILES["file2"]["size"] > 10000) {
            echo "عذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
        }

        $check = getimagesize($_FILES["file2"]["tmp_name"]);
        if ($check === false) {
            echo "الملف ليس صورة.";
            $uploadOk = 0;
        }

        if ($uploadOk == 1) {
            if (move_uploaded_file($_FILES["file2"]["tmp_name"], $targetFile)) {
                echo "تم رفع الملف ";
            }
        }
    }
}

في هذا الكود، استخدمنا دالة htmlspecialchars وهي تستخدم لتنقية المدخلات من أي رموز غير متوقعة مثل "$". هذا يساعد على تجنب أي مشاكل ناتجة عن وجود رموز غير مرغوب فيها في المدخلات.

ويجب التأكد أيضا من أن جزء النموذج (form) في HTML لا يحتوي على أي أحرف خاصة غير متوقعة في value:

<form method="post" enctype="multipart/form-data">
    <select name="SHU">
        <option value="الصورة الاولى">الصورة الأولى</option>
        <option value="الصورة الثانية">الصورة الثانية</option>
    </select>
    <input type="file" name="file" id="file">
    <input type="file" name="file2" id="file2">
    <input type="submit" value="رفع الملف">
</form>
  • 0
نشر
بتاريخ 30 دقائق مضت قال Khaled Osama3:

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

المشكلة هنا قد تكون ناتجة عن عدم تنقية المدخلات (inputs) بشكل صحيح ففي حالة وجود أي رموز غير متوقعة مثل "$" من المهم التأكد من أن المدخلات لا تحتوي على أي رموز قد تؤثر على النتيجة.

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // تنقية المدخلات من أي رموز غير متوقعة
    $option = htmlspecialchars($_POST["SHU"], ENT_QUOTES, 'UTF-8');
    $targetDir = "img/";
    $uploadOk = 1;

    if ($option == "الصورة الاولى" && isset($_FILES["file"])) {
        $targetFile = $targetDir . basename($_FILES["file"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        if ($_FILES["file"]["size"] > 20000) {
            echo "عذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
        }

        $check = getimagesize($_FILES["file"]["tmp_name"]);
        if ($check === false) {
            echo "الملف ليس صورة.";
            $uploadOk = 0;
        }

        if ($uploadOk == 1) {
            if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
                echo "تم رفع الملف ";
            }
        }
    } elseif ($option == "الصورة الثانية" && isset($_FILES["file2"])) {
        $targetFile = $targetDir . basename($_FILES["file2"]["name"]);
        $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        if ($_FILES["file2"]["size"] > 10000) {
            echo "عذراً، حجم الملف كبير جداً.";
            $uploadOk = 0;
        }

        $check = getimagesize($_FILES["file2"]["tmp_name"]);
        if ($check === false) {
            echo "الملف ليس صورة.";
            $uploadOk = 0;
        }

        if ($uploadOk == 1) {
            if (move_uploaded_file($_FILES["file2"]["tmp_name"], $targetFile)) {
                echo "تم رفع الملف ";
            }
        }
    }
}

في هذا الكود، استخدمنا دالة htmlspecialchars وهي تستخدم لتنقية المدخلات من أي رموز غير متوقعة مثل "$". هذا يساعد على تجنب أي مشاكل ناتجة عن وجود رموز غير مرغوب فيها في المدخلات.

ويجب التأكد أيضا من أن جزء النموذج (form) في HTML لا يحتوي على أي أحرف خاصة غير متوقعة في value:

<form method="post" enctype="multipart/form-data">
    <select name="SHU">
        <option value="الصورة الاولى">الصورة الأولى</option>
        <option value="الصورة الثانية">الصورة الثانية</option>
    </select>
    <input type="file" name="file" id="file">
    <input type="file" name="file2" id="file2">
    <input type="submit" value="رفع الملف">
</form>

شكرآ جزيلاً استاذ.... هذا علمآ هذا السكربت مكرر لأكثر من واحد لكن السلكت والخيارات تختلف... هل هذا قد بؤثر على نتيجة المشروع اذا 

  • 0
نشر

لن يوثر علي نتيجه المشروع ولكن قد يؤدي ذلك إلى تعقيدات إذا لم يتم التعامل مع كل سكربت بشكل مستقل ومنظم وهذا يخالف أنماط تصميم البرمجيات (software design patterns) لتجنب أي تأثير سلبي على نتيجة المشروع، يجب اتباع بعض الممارسات الجيدة في كتابة الكود وإدارته.

يجب استخدام أسماء متغيرات فريدة فلكل نموذج (form) وسكربت، استخدم أسماء متغيرات وأسماء حقول فريدة. هذا يمنع التداخل بين السكربتات المختلفة.

والتحقق من القيم المدخلة يجب التحقق من القيم المدخلة في كل مرة وعدم استخدام نفس المتغيرات لمعالجة قيم مختلفة.

وايضا إعادة استخدام الأكواد بحذر فإذا كان يجب عليك إعادة استخدام أجزاء من الكود، يمكنك وضع هذه الأجزاء في دوال (Functions) بحيث يمكن استدعاؤها بسهولة دون تداخل.

إليك مثال على كيفية إعادة تنظيم الكود الخاص بك باستخدام دوال مستقلة لكل خيار:

function uploadImage($fileInputName, $maxFileSize) {
    $targetDir = "img/";
    $targetFile = $targetDir . basename($_FILES[$fileInputName]["name"]);
    $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
    $uploadOk = 1;

    if ($_FILES[$fileInputName]["size"] > $maxFileSize) {
        echo "عذراً، حجم الملف كبير جداً.";
        $uploadOk = 0;
    }

    $check = getimagesize($_FILES[$fileInputName]["tmp_name"]);
    if ($check === false) {
        echo "الملف ليس صورة.";
        $uploadOk = 0;
    }

    if ($uploadOk == 1) {
        if (move_uploaded_file($_FILES[$fileInputName]["tmp_name"], $targetFile)) {
            echo "تم رفع الملف بنجاح.";
        } else {
            echo "حدث خطأ أثناء رفع الملف.";
        }
    }
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $option1 = $_POST["SHU1"];
    $option2 = $_POST["SHU2"];

    if ($option1 == "الصورة الاولى" && isset($_FILES["file1"])) {
        uploadImage("file1", 20000);
    }

    if ($option2 == "الصورة الثانية" && isset($_FILES["file2"])) {
        uploadImage("file2", 10000);
    }
}

وبالنسبة للنموذج (form) في HTML، تأكد من أن لديك أسماء حقول فريدة لكل خيار:

<form method="post" enctype="multipart/form-data">
    <select name="SHU1">
        <option value="الصورة الاولى">الصورة الأولى</option>
    </select>
    <input type="file" name="file1" id="file1">
    <select name="SHU2">
        <option value="الصورة الثانية">الصورة الثانية</option>
    </select>
    <input type="file" name="file2" id="file2">
    <input type="submit" value="رفع الملف">
</form>

بهذه الطريقة، كل نموذج وسكربت يعمل بشكل مستقل ولن يكون هناك تداخل بين القيم أو المعالجة. إذا كانت هناك المزيد من السكربتات أو الخيارات، يمكنك اتباع نفس النهج لضمان عدم وجود تعارضات أو مشاكل.

  • 0
نشر
بتاريخ 44 دقائق مضت قال Khaled Osama3:

لن يوثر علي نتيجه المشروع ولكن قد يؤدي ذلك إلى تعقيدات إذا لم يتم التعامل مع كل سكربت بشكل مستقل ومنظم وهذا يخالف أنماط تصميم البرمجيات (software design patterns) لتجنب أي تأثير سلبي على نتيجة المشروع، يجب اتباع بعض الممارسات الجيدة في كتابة الكود وإدارته.

يجب استخدام أسماء متغيرات فريدة فلكل نموذج (form) وسكربت، استخدم أسماء متغيرات وأسماء حقول فريدة. هذا يمنع التداخل بين السكربتات المختلفة.

والتحقق من القيم المدخلة يجب التحقق من القيم المدخلة في كل مرة وعدم استخدام نفس المتغيرات لمعالجة قيم مختلفة.

وايضا إعادة استخدام الأكواد بحذر فإذا كان يجب عليك إعادة استخدام أجزاء من الكود، يمكنك وضع هذه الأجزاء في دوال (Functions) بحيث يمكن استدعاؤها بسهولة دون تداخل.

إليك مثال على كيفية إعادة تنظيم الكود الخاص بك باستخدام دوال مستقلة لكل خيار:

function uploadImage($fileInputName, $maxFileSize) {
    $targetDir = "img/";
    $targetFile = $targetDir . basename($_FILES[$fileInputName]["name"]);
    $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
    $uploadOk = 1;

    if ($_FILES[$fileInputName]["size"] > $maxFileSize) {
        echo "عذراً، حجم الملف كبير جداً.";
        $uploadOk = 0;
    }

    $check = getimagesize($_FILES[$fileInputName]["tmp_name"]);
    if ($check === false) {
        echo "الملف ليس صورة.";
        $uploadOk = 0;
    }

    if ($uploadOk == 1) {
        if (move_uploaded_file($_FILES[$fileInputName]["tmp_name"], $targetFile)) {
            echo "تم رفع الملف بنجاح.";
        } else {
            echo "حدث خطأ أثناء رفع الملف.";
        }
    }
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $option1 = $_POST["SHU1"];
    $option2 = $_POST["SHU2"];

    if ($option1 == "الصورة الاولى" && isset($_FILES["file1"])) {
        uploadImage("file1", 20000);
    }

    if ($option2 == "الصورة الثانية" && isset($_FILES["file2"])) {
        uploadImage("file2", 10000);
    }
}

وبالنسبة للنموذج (form) في HTML، تأكد من أن لديك أسماء حقول فريدة لكل خيار:

<form method="post" enctype="multipart/form-data">
    <select name="SHU1">
        <option value="الصورة الاولى">الصورة الأولى</option>
    </select>
    <input type="file" name="file1" id="file1">
    <select name="SHU2">
        <option value="الصورة الثانية">الصورة الثانية</option>
    </select>
    <input type="file" name="file2" id="file2">
    <input type="submit" value="رفع الملف">
</form>

بهذه الطريقة، كل نموذج وسكربت يعمل بشكل مستقل ولن يكون هناك تداخل بين القيم أو المعالجة. إذا كانت هناك المزيد من السكربتات أو الخيارات، يمكنك اتباع نفس النهج لضمان عدم وجود تعارضات أو مشاكل.

 مشكله عملت نفس ماقلت ولم تضبط بقى علامة الدولار تظهر 

  • 0
نشر

حسنا في هذه الحاله ارجو ارسال الفورم التي لديك في صفحه ال HTML وايضا ان تسخدم ال var_dump في ملف ال php  لطباعة القيم المدخلة للتحقق من عدم وجود أي رموز غير متوقعة

// طباعة القيم للتحقق منها
var_dump($option1);
var_dump($option2);

 

  • 0
نشر
بتاريخ 5 دقائق مضت قال Mohammed Maree:

لم تضبط بقى علامة الدولار تظهر 

لاحظ أن الكود الذى أرسلته لا يوجد به الجزء الخاص بالإدخال في قاعدة البيانات . لذلك إذا كان هذا هو الملف كاملا إذا هذا ليس الإسكريبت الذى يتم تنفيذه . قم بالبحث في ملف الواجهة الأمامية html و أبحث عن خاصية action فى عنصر form وستجد بها إسم الملف قم بإرسال الكود في هذا الملف لمحاولة مساعدتك في حل المشكلة

  • 0
نشر
بتاريخ 6 دقائق مضت قال محمد عاطف17:

لاحظ أن الكود الذى أرسلته لا يوجد به الجزء الخاص بالإدخال في قاعدة البيانات . لذلك إذا كان هذا هو الملف كاملا إذا هذا ليس الإسكريبت الذى يتم تنفيذه . قم بالبحث في ملف الواجهة الأمامية html و أبحث عن خاصية action فى عنصر form وستجد بها إسم الملف قم بإرسال الكود في هذا الملف لمحاولة مساعدتك في حل المشكلة

عمليه الارسال ناجحة وكلشي شغال لكن ظهور هذه العلامة فقط... اين ممكن تكون المشكله هل في السكربت ام في الفورم ام في هذا الكود الذي أرسلته انا أعلاه 

  • 0
نشر
بتاريخ الآن قال Mohammed Maree:

عمليه الارسال ناجحة وكلشي شغال لكن ظهور هذه العلامة فقط... اين ممكن تكون المشكله هل في السكربت ام في الفورم ام في هذا الكود الذي أرسلته انا أعلاه 

كما أخبرتك الكود السابق لا يقوم بالإدخال في قاعدة البيانات إذا ليس هذا هو الكود الذى يتم تنفيذه كل ما يقوم به الكود السابق هو رفع الملف فقط على السيرفر دون أن يضيف أى شئ في قاعدة البيانات .

يفضل إرسال ال form لنرى أى ملف يتم إرساله إلى قاعدة البيانات

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...