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

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: Aug 2004-
#1 (permalink)  
ملحوظات مفيده لبرمجه قويه بأستخدام الــ 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

وللحديث بقيه






__________________
اقوى مواقع البرمجه العربيه ( قريباً )
Brmaga غير متواجد حالياً   قديم 13-07-2005, 09:34 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Apr 2004-
#2 (permalink)  

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






__________________
ماشاء الله و لا حولا و لاقوة إلا بالله
moslem_tk غير متواجد حالياً   قديم 14-07-2005, 12:13 AM
رد مع اقتباس
-
#3 (permalink)  

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

وفقك الله






  قديم 14-07-2005, 01:12 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#4 (permalink)  

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

مشكور اخوي






__________________
htaccess بكل بساطة

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

(إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي
jadweb.com غير متواجد حالياً   قديم 14-07-2005, 01:55 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Feb 2003-
#5 (permalink)  

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

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

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






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

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

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

THE STUDENT غير متواجد حالياً   قديم 14-07-2005, 02:33 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Feb 2001-
#6 (permalink)  

بطل يا بطل






__________________
www.fmlog.com
المحارب غير متواجد حالياً   قديم 14-07-2005, 04:00 AM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Aug 2004-
#7 (permalink)  

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

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






__________________
اقوى حملات الدعايا والاعلان !!!
Dream4Host غير متواجد حالياً   قديم 14-07-2005, 03:37 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#8 (permalink)  

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






__________________
....
محمد حسام
انترنت بلس
إنترنت بلس غير متواجد حالياً   قديم 14-07-2005, 11:48 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2003-
#9 (permalink)  

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

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

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

الى الامام






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

Pal Coder == Palestinian Coder
Pal Coder غير متواجد حالياً   قديم 15-07-2005, 03:21 AM
رد مع اقتباس
-
#10 (permalink)  

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

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

وفقكم الله






  قديم 15-07-2005, 08:28 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Dec 2004-
#11 (permalink)  

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

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

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

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

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

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






__________________
المروه.نت تقديم خدمات تقنية المعلومات و التجارة الالكترونية
www.almarwa.net.sa
al-marwa غير متواجد حالياً   قديم 17-07-2005, 04:31 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2004-
#12 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة Brmaga
كود:
<IfModule mod_php4.c>

php_flag magic_quotes_gpc off

</IfModule>
أول شي أحب أشكرك جزيل الشكر على هذا الشرح الرائع

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

php_flag safe mode on

</IfModule






PHP Expert غير متواجد حالياً   قديم 18-07-2005, 03:40 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Aug 2004-
#13 (permalink)  

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

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

php_flag safe mode on

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






__________________
اقوى حملات الدعايا والاعلان !!!
Dream4Host غير متواجد حالياً   قديم 27-07-2005, 11:06 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2004-
#14 (permalink)  

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

اخى f555f

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

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






__________________
اقوى مواقع البرمجه العربيه ( قريباً )
Brmaga غير متواجد حالياً   قديم 31-07-2005, 01:51 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Apr 2004-
#15 (permalink)  

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






__________________
سبحان الله وبحمده .. سبحان الله العظيم
http://www.ahmedtohamy.com
http://www.ahmedtohamy.com/resume
Ahmed Tohamy غير متواجد حالياً   قديم 24-01-2006, 08:08 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2004-
#16 (permalink)  

مشكور اخوى على الموضوع الرائع






__________________
اقم صلاتك قبل مماتك اقم صلاتك تنعم بحياتك
صلى قبل ان يصلى عليك - لا حول ولا قوه الا بالله
0124686663 & 0114686663
خدمات الشبكات اللاسلكية
hunter_rare غير متواجد حالياً   قديم 25-01-2006, 01:01 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Jun 2005-
#17 (permalink)  

جزاك الله الف خير اخي العزيز

نصائح مهمة جداً لكل مبرمج


الف شكر لكل اخي ونرجوا منك الاستمرار في مثل هذه النصائح

ونأمل من جميع الأخوان أثراء هذه الساحة بمثل هذه المواضيع المهمة للمبرمجين العرب حتى تكون برامجنا التي ننتجها نظيفة وخالية من العيوب والأخطاء






سيف جرافيكس غير متواجد حالياً   قديم 07-02-2006, 01:50 AM
رد مع اقتباس
رد


 

أدوات الموضوع

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 06:11 AM بتوقيت المملكة العربية السعودية