• php
  • 1891
  • 20-3-2008
  • مرحب بالجميع
    أعتقد أن هذا الموضوع يهم كل المبرمجين ولو كان معاد فأرجو المعذره للأعاده أفاده ,,
    فلنبدأ
    $_POST وهي مصفوفة تحتوي جميع المتغيرات المرسله بال POST
    $_GET وهي مصفوفة تحتوي جميع المتغيرات المرسله عبر المتصفح بالطريقة Get
    $_REQUEST وهي مصفوفة تجمع بين الأثنين GET , POST وينصح بأستخدامها
    مثال
    لدينا ملف form.html به الكود التالي
    <form action="process.php" method="POST">
    <input type="text" name="textname" />
    <input type="submit" name="submit" value="send"/>
    </form>

    الملف الثاني process.php
    <?php echo $textname; ?>

    للرجستر جلوبال حالتين أحداهما on والأخرى off
    خطر الجلوبال يكمن في حالتها on وذلك لأستغلال بعض الهاكرز هذه النقطة لأختراق المواقع

    ونرجع للمثال السابق

    ففي الحالة on يعمل المثال السابق 100% اما في حاله off فلا يعمل

    ما السبب ؟؟
    السبب فى خاصية الـ register_global

    فهى تمكننا من استخدام محتويات مصفوفة من المصفوفات التى تسمى مصفوفات Superglobals او Predefined وهى مصفوفات معرفة مسبقا تحتوى على بيانات معينه ومحددة

    مثلا مصفوفة $_COOKIE تحتوى على جميع الكوكيز التى قمت بزرعها فى جهاز العميل

    مصفوفة $_POST تحتوى على جميع البيانات التى تم وصلت الى الملف بطريقة post

    وهكذا



    اذن ما هى الطرقة الصحيحة لكتابةالكود؟؟
    echo $_POST['mytext'];

    وبهذا نرى ان وظيفة register_global هى اننا تجعلنا نستخدم المتغيرات مباشرة دون استخدم المصفوفة الخاصة بها $_POST او $_GET او $_COOKIE او غيرها

    اتمنى ان اكون قد اوصلت الفكرة اليكم

    ولهذا ينصح دائما بكتابة السكريبتات بالطريقة الاساسية وهى استخدام المصفوفات فلو كانت register_global فى وضع off او وضع on فهذا لن يؤثر على السكريبت باى حال ولكن عندما نتعامل مع المتغيرات مباشرا فهذا يحصر أسكربتاتنا على أستخدام الجلوبال مما يسبب مشاكل ببعض المواقع

    وللعلم ان ملف php.ini الذى يحتوى على جميع اعدادت اللغة منذ الاصدار 4.2 نجد ان خاصية
    register_global تكون فى الوضع off


    ونستنتج من هذا أن مصممي لغة php أنفسهم ينصحون بجعل ال register_global في وضعية off

    ==
    لتغيير الوضعية بالسيرفر الشخصي
    Appserv
    من مجلد الويندوز على C: أبحث عن ملف php.ini وبداخلة أبحث عن register_global = On


    Xampp

    بداخل مجلد xampp
    Xampp/apache/bin/php.ini
    أفتح الملف php.ini وعدل ما يلزم
    كاتب المقال : php-Tiger
    كن أول من يقيم الموضوع
    12345