صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 17

الموضوع: ملحوظات مفيده لبرمجه قويه بأستخدام الــ PHP و الــ Mysql

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    34

    ملحوظات مفيده لبرمجه قويه بأستخدام الــ PHP و الــ Mysql



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

    هذا الموضوع سيضم الكثير من الاشياء المفيده الخاصه بالبرمجه بلغه ال PHP والـ MYSQL

    ملحوظه

    فى الامثله التى سأقوم بشرحها سأقوم بأستخدام بعض الدوال الجديده مثل

    ($_GET/$_POST/$_COOKIE/$_SERVER)

    وذلك لاننى اعتقد انه اذا لم يكن جميعكم فغالبيتكم يوجد لديه الأصداره 4.1.0 من الــ PHP

    واذا لم تكن لديكم هذه الأصاره يمكنكم استخدام الدوال القديمه

    كود PHP:

    ($HTTP_GET_VARS/$HTTP_POST_VARS/$HTTP_COOKIE_VARS/$HTTP_SERVER_VARS
    ولكن ينبغي عليكم الترقيه وذلك لاكتشاف عده ثغرات بالنسخ القديمه منها على سبيل المثال لا الحصر file-upload vulnerability


    register_globals

    فى البدايه لمن لا يعلم فائده ال register_globals فهو خيار فى ملف اعدادات الــ php واسم ملف الاعدادات php.ini

    وهذا الخيار اذا كان مفعل اى

    كود:
    register_globals=on
    فانه يمكنك من الوصول لمعظم متغيرات الاسكريبت الخاص بك بطريقه سحريه عن طريق مناداه المتغير بأسمه فقط

    وينتج هذا لانه عند تفعيل هذا الخيار يتم تحويل المتغيرات العاديه الى متغيرات عامه (global variables)

    وللأسف هذه الطريقه يتم استخدامها فى الكثير والكثير من البرامج والأمثله ..

    وقد لاحظ فريق المطورين الخاص بالـ PHP ذلك واتضح لهم ان خيار الــ register_globals كانت فكره سيئه للغايه ,

    وتم مناقشه هذا الامر هنا

    http://www.php.net/manual/en/securit...terglobals.php

    ونصحو بغلقها تماما

    كود:
    register_globals=OFF
    Note that register_globals is going to be deprecated (i.e., turned off by default) in the next version of PHP, because it often leads to security bugs.
    ...
    You should do your best to write your scripts so that they do not require register_globals to be on

    وذلك لانها تتسبب فى وجود الكثير من الثغرات الامنيه ..

    وفى الحقيقه منذ بدايه عصر الاصداره رقم 4.2.0 تم اغلاق الــ register_globals بصوره افتراضيه الان ,

    ولذلك يجب مراعاه كتابه كود برمجى يعمل على الأنظمه كلها سواء كانت الــ

    كود:
    register_globals=ON
    او

    كود:
    register_globals=OFF
    ولذلك وجب علينا استخدام بعض الدوال المختصه بأستقبال المتغيرات مثلا لأستقبال متغير يسمى

    كود PHP:
    $VAR 
    الطريقه القديمه كانت بواسطه كتابه اسمه فقط

    كود PHP:

    Echo $var
    هذه فى حاله ان الــ

    كود:
    register_globals=ON
    والطريقه الثانيه والمثلي

    كود PHP:

    Echo $_GET['VAR'];

    //او

    Echo $_POST['VAR']; 
    هذا فى حاله استقبال متغيرات عن طريق الــ Get او الـــ POST

    ولطباعه نوع المتصفح نستخدم

    كود PHP:

    eCHO $_SERVER['HTTP_USER_AGENT']; 
    بدلا من

    كود PHP:

    ECHO $HTTP_USER_AGENT
    وهناك العديد من الدوال التى يجب ان نلم بها وهى

    $_GET, $_POST, $_COOKIE, $_SERVER

    ويمكنكم قراءه المزيد هنا

    http://www.php.net/manual/en/languag...predefined.php

    او هنا

    http://www.php.net/manual/en/reserved.variables.php


    magic_quotes , addslashes() , stripslashes() ...

    magic_quotes_gpc هو احد الخيارات الموجوده فى ملف اعدادات الــ PHP وعندما يكون هذا الخيار مفعلا اى

    كود:
    magic_quotes_gpc =ON
    فأنها تضيف شرطات مائله (\) الى جميع المتغيرات

    GET/POST/COOKIE

    لذلك لا يوجد داعى لاستخدام addslashes() اذا كان هذا الخيار مفعلا

    لذلك فعند اجراء الاستعلامات لاننا بهذا سنعقد المسأله , ولتوضيح ما ارمي اليه , فاذا كان هذا الخيار مفعلا ستصبح كلمه I'M = I\\'M

    وايضا اذا استخدمنا داله addslashes() فى حاله كان الخيار غير مفعل ستصبح كلمه I'M = I\\'M

    لاحظنا الان ان الاثنين يقومون بنفس العمل

    فما بالك اذا قمنا بأستخدام الداله addslashes() وكان خيار

    كود:
    magic_quotes_gpc =ON
    ستصبح كلمه I'M = I\\\\'M

    ارأيتم التعقيد ؟ ماذا لو اردنا استخراج هذا الناتج من قاعده البيانات واخراجه للمستخدم الناتج التلقائي سيكون

    I\\'M

    وهو غير مطابق للمدخلات بأى حال من الاحوال ولذلك وجب علينا استخدام داله stripslashes() وسيكون النتيجه

    I'M

    ولكن لماذا نستخدم هذا الكم من الدوال مادام فى امكاننا ان نستخدم داله واحده فقط وهى addslashes() ؟؟؟

    تذكرو دائما ان المبرمج المحترف هو من يصل للنتيجه بأقل عدد من الاسطر البرمجيه

    لذلك اننى انصح بغلق الـــ magic_quotes_gpc

    واستخدام داله addslashes() فقط عند ادخال بيانات لقاعده بيانات فقط

    يمكنك غلق الــ magic_quotes_gpc وجعله = OFF عن طريق اضافه الكود التالى لملف .htaccess

    كود:
    <IfModule mod_php4.c>
    
    php_flag magic_quotes_gpc off
    
    </IfModule>
    واذا لم يمكنك يمكنك استخدام هذه الداله فى كافه ملفاتك عن طريق وضعها فى ملف خاص وتضمينها فى بدايه كل ملف ..

    وفائده هذه الداله هو تخطى الــ شرطات المائله التى تنتج نتيجه فتح خيار magic_quotes_gpc

    كود PHP:

    function strip_magic_quotes($arr)

    {

    foreach (
    $arr as $k => $v)

    {

    if (
    is_array($v))

    $arr[$k] = strip_magic_quotes($v); }

    else

    $arr[$k] = stripslashes($v); }

    }

     

    return 
    $arr;

    }

     

    if (
    get_magic_quotes_gpc())

    {

    if (!empty(
    $_GET))    { $_GET    strip_magic_quotes($_GET);    }

    if (!empty(
    $_POST)) { $_POST strip_magic_quotes($_POST); }

    if (!empty(
    $_COOKIE)) { $_COOKIE strip_magic_quotes($_COOKIE); }



    ereg ام preg ??

    نعلم جميعا اهميه ال regular expression او ما تسمى بالتعبيرات النظاميه او الاعتياديه

    وعندما نقوم باستخدام الدوال الخاصه بالــ regular expression نقوم باستخدام داله ereg او داله preg

    ولكن فى الحقيقه الاختيار الصائب هو استخدام داله preg

    فهى من حيث السرعه شعف سرعه ereg بالاضافه الى انها تدعم عمليات اضافيه كثيره خاصه بالــ

    regular expression

    ولذلك لا ارى داعى من استخدام داله ereg

    المانول الخاص بالداله preg

    http://www.php.net/manual/en/ref.pcre.php

    النموذج النحوى لها

    http://www.php.net/manual/en/pcre.pattern.syntax.php

    وسوم بدايه الــ PHP (php tags)

    معظمنا يعلم ان صفحات ال php من الممكن ان تبدأ بأربعه اشكال من الوسوم ومن خلالها يعلم السيرفر ان التطبيقات القادمه اليه هى تطبيقات

    php

    وهذه الوسوم هى

    الوسم الكامل [full PHP open tag]

    كود PHP:

    <?PHP

    ?>
    الطرق الاخرى

    كود PHP:

    <?

    ?>

     

    <%

    %>

     

    <SCRIPT language="php">

    </script>
    وبالطبع يعتمد عمل بعض هذه الوسوم على اعدادات ملف الاعدادات الخاص بال php

    [short_open_tag]

    ولذلك ننصح جميع المبرمجين باستخدام الوسوم الكامله الخاصه بالــ php

    وهى

    كود PHP:

    <?php

    ?>
    انظرو الى هذا الكود

    كود PHP:

    <?=$var?>
    هذا لن يعمل فى حاله غلق خيار الـــ [short_open_tag]

    والافضل ان نستخدم الطريقه العاديه او الطويله

    كود PHP:

    <?php echo $var?>
    اجعل كودك البرمجى سهل القراءه

    من المفيد جدا ان تجعل برنامجك سهل القراءه وذلك لاسباب عديده منها سهوله عمليه اكتشاف الاخطاء بعد ذلك وسهوله التطوير

    وجعله سهلا للمبرمجين الاخرين , فعلى سبيل المثال لا ننصح باستخدام القواعد الشرطيه بهذا الشكل

    كود PHP:

    if (): ... endif; 
    ويفضل ان تكون بهذا الشكل

    كود PHP:

    if (condation)

    {

    //افعل ما تريد ;


    التبليغ عن الاخطاء

    من المفيد حقا ان تجبر الاسكريبت على اخبارك بكل الاخطاء البرمجيه حتى تكون على علم ودرايه بها وهذا يكون عن طريق الــ error_reporting فلا تقبح الاخطاء ...

    يمكنك تعديل خيار تقارير الاخطاء عن طريق ملف الاعدادات php.ini او عن طريق

    داله error_reporting()

    النصوص

    يوجد لدى عده ملحوظات على النصوص

    1- عند استخدام النصوص يفضل ان توضع بين single quotes فى كل الحالات اذا امكن طالما انها لا تحتوى على متغيرات او

    single quotes او \n الخ , فهذا يجعل الامر سهلا على المترجم

    2- عند استخدام المصفوفات واضافه النصوص اليها لابد ان نضعها بين single quotes (') حتى لا تعامل على انها ثوابت

    كود PHP:

    // صحيح لانه متغير

    echo $row[$key]; 


    // خطا , الا فى حاله كون الــ Key ثابت

    echo $row[key]; 

     

    // صحيح 

    echo $row['key']; 


    // صحيح طالما انه موجود داخل نص

    echo "Text: $row[key]"
    3- عند الدمج مابين الــ php والــ html يفضل فصل الاكواد عن بعضها

    مثال

    كود PHP:

    <?PHP

    echo "<html><head><title>site name</title></head>

    <body>"
    ;

     

    echo 
    $anyvar;

     

    echo 
    "</body></html>";

    ?>
    فى المثال السابق لاحظنا تداخل وسوم اللغتين الــ php و ال html معا

    ولكن فى الاكواد الكبيره يفضل فصل الاثنين عن بعضهما لزياده سرعه الترجمه

    مثال

    كود:
    <html><head><title>site name</title></head><body>
    
    <?php
    
    echo $anyvar;
    
    ?>
    
     
    
    </body></html>
    هنا قمنا بفصل الــ html عن الــ php وستلاحظون الفرق فى السرعه عند كبر حجم التطبيقات

    رابط الموضوع الاصلى

    http://www.brmaga.com/vb/thread9.html

    وللحديث بقيه





    __________________
    اقوى مواقع البرمجه العربيه ( قريباً )


  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Apr 2004
    المشاركات
    2,477


    جزاك الله خير اخى الكريم .. فعلا موضوع مفيد جداا





    __________________
    ماشاء الله و لا حولا و لاقوة إلا بالله .
    ويب إيفوليوشن WEC : عندما تمتلك العصا التي تفعل بها كل شيء
    معاينة الإصدارة 1.0.6

  3. #3
    فضلاً اكتب اسمك الحقيقي هنا
    زائرداعية


    موضوع أكثر من رائع
    استفدت كثيرا
    وإذا عندك نصائح إضافية لا تبخل بها

    وفقك الله






  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,123


    اقتباس المشاركة الأصلية كتبت بواسطة moslem_tk
    جزاك الله خير اخى الكريم .. فعلا موضوع مفيد جداا

    مشكور اخوي





    __________________
    htaccess بكل بساطة

    الشفرة الموحدة "يونِكود"

    (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Feb 2003
    المشاركات
    269


    موضوع متميز وبه معلومات مفيده جدا ستفيد مبرمجين الــ PHP على المدى الطويل

    بصراحه يستحق التثبيت

    جزاك الله خيرا اخى الكريم ووفقك انت وموقعك





    __________________
    [... الحمدُ لله خالقِ الخلق، باسط الرزق، فالقِ الاصباح، ذي الجلال والاكرام، والفضل والانعام، الذي بَعُد فلا يُرى، وقرُبَ فشهِد النجوى.. تبارَك وتعالى، الحمدُ لله الذي ليس له منازع يعادله، ولا شبيه يشاكله، ولا ظهير يعاضده، قهر بعزَّته الاعزاء، وتواضع لعظمته العظماء، فبلغَ بقدرته ما يشاء..]

    برمجه برامج تطبيقيه بواسطه Visual C++ , Visual basic , C

    احتراف قواعد بيانات Sql , Oracle , Access


  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2001
    المشاركات
    749


    بطل يا بطل





    __________________
    www.fmlog.com

  7. #7
    عضو جديد
    تاريخ التسجيل
    Aug 2004
    المشاركات
    15


    موضوع رائع ويستحق التثبيت

    الله يوفقك يا بطل





    __________________
    اقوى حملات الدعايا والاعلان !!!

  8. #8
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    شكرا لك على النصائح الممتازة





    __________________
    ....
    محمد حسام
    انترنت بلس

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


    نصائح جميلة جدا ومفيدة .. تهم كل مبرمج مبتدئ او متوسط او حتى متقدم فبعض المبرمجين يقعون في الاخطاء .

    نقطة اجعل كودك البرمجى سهل القراءه

    تعبت وانا اقول فيها لكن ارجو ان الكل يتبعها

    الى الامام





    __________________
    AlwatanVoice, www.alwatanvoice.com
    Almashroo, www.almashroo.com

    Pal Coder == Palestinian Coder

  10. #10
    فضلاً اكتب اسمك الحقيقي هنا
    زائرداعية


    السلام عليكم مجددا
    إخوني المبرمجين

    لنجعل هذا الموضوع مميزا بالنصائح البرمجية
    هذه دعوة للجميع للمشاركة

    وفقكم الله






  11. #11
    عضو نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    220


    ما شاء الله ممتاز اخوي على هذه النصائح المفيده :nice:

    و أرغب ان اؤكد على الاخوة اهمية استخدام المتغيرات

    كود PHP:
    $_POST$_GET $_FIELS 
    و السبب هي زيادة حماية البرنامج مثلا انت لو عامل فورم يستقبل password
    كا post ما يجي شخص و يستغل انك ما تستغدم $_POST

    و ممكن يرسلها ك get و قد تسبب لك بمشاكل في برنامجك و خرق للحماية

    فقدر الإمكان يجب استخدامها و التأكد من صحة المعلومات المرسلة خلالها

    اتمنى للجميع التوفيق
    المروه





    __________________
    المروه.نت تقديم خدمات تقنية المعلومات و التجارة الالكترونية
    www.almarwa.net.sa

  12. #12
    عضو فعال
    تاريخ التسجيل
    Aug 2004
    المشاركات
    1,974


    اقتباس المشاركة الأصلية كتبت بواسطة Brmaga
    كود:
    <IfModule mod_php4.c>
    
    php_flag magic_quotes_gpc off
    
    </IfModule>
    أول شي أحب أشكرك جزيل الشكر على هذا الشرح الرائع

    بالنسبة للكود السابق..
    لو فرضنا أنه السيف مود غير شغال على السيرفر هل أقدر أني اشغله عن طريق الكود التالي
    كود PHP:
    <IfModule mod_php4.c>

    php_flag safe mode on

    </IfModule






    __________________
    انا أريد وأنت تريد والله يفعل مايريد!

  13. #13
    عضو جديد
    تاريخ التسجيل
    Aug 2004
    المشاركات
    15


    اقتباس المشاركة الأصلية كتبت بواسطة f555f
    أول شي أحب أشكرك جزيل الشكر على هذا الشرح الرائع

    بالنسبة للكود السابق..
    لو فرضنا أنه السيف مود غير شغال على السيرفر هل أقدر أني اشغله عن طريق الكود التالي
    كود PHP:
    <IfModule mod_php4.c>

    php_flag safe mode on

    </IfModule
    نعم يمكنك ولكن اذا كنت تملك الصلاحيات الــ Root





    __________________
    اقوى حملات الدعايا والاعلان !!!

  14. #14
    عضو نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    34


    مشكورين اخوانى على الردود

    اخى f555f

    لا يمكنك فعل ذلك

    ولجعل ال safe mode on يمكنك ذلك عن طريق ملف الــ httpd.conf اذا كنت تملك الصلاحيات اللازمه





    __________________
    اقوى مواقع البرمجه العربيه ( قريباً )

  15. #15
    عضو فعال
    تاريخ التسجيل
    Apr 2004
    المشاركات
    1,479


    شكرا لك اخي العزيز موضوع قوي جدا





    __________________
    سبحان الله وبحمده .. سبحان الله العظيم
    المستضيفون العرب لخدمات ادارة السيرفرات





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

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض