الملاحظات
ركن لغات البرمجه
:: لغات البرمجه php و asp و Ajax و Java و غيرها

اساسيات البرمجة الامنة في لغة PHP

الملخص في هذا المقال تم استعراض أهم الأساسيات والأمور التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة PHP , وأهم هذه الأساسيات هو تأمين المدخل

اضافة رد
رقم المشاركة # 1  
أضيفت بتاريخ 27 - 08 - 2010 عند الساعة 12:03
بيانات موقعي
اصدار المنتدى: منتج اخر
تاريخ الإنضمام: 13 - 08 - 2005
رقم العضوية : 7173
العمر: 32
المشاركات: 676
قوة السمعة : 57
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
افتراضي

اساسيات البرمجة الامنة في لغة PHP


اساسيات البرمجة الامنة في لغة PHP

الملخص

في هذا المقال تم استعراض أهم الأساسيات والأمور التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة PHP , وأهم هذه الأساسيات هو تأمين المدخل القادم من مستخدم التطبيق حيث أن الحديث في هذا المجال يطول وذلك بسبب خطورة أي مدخل من قبل المستخدم, ولكن أهم ما تطرقت إليه هو عملية التحقق من صحة المدخل , مثل نوعية المدخل, لأن بعض المخترقين يتعمدون إدخال قيمة خاطئة من أجل تعطيل التطبيق أو من أجل إدراج قيمة خاطئة في قاعدة البيانات أو لحذف شيء منها , وقد ذكرتُ بعضا من الأمثلة التي تعمل على التحقق والتأكد من المدخل , وأيضا من الأمور التي تحقق تأمين المدخل الحماية من الثغرات التي يكون سببها أخطاء برمجية في برامج معينة مثل خادم الموقع ,فيأتي من يستغل هذه الثغرات ويكسر حماية الموقع أثناء الإدخال , ومن هذه الثغرات التي تحدثت عنها حقن SQL, البرمجة المتقاطعة للموقع و ثغرة استدعاء الملفات ,وتم ذكر الحلول المقابلة لمواجهة كل نوع من هذه الثغرات , والأمر الثاني هو رسائل الخطأ التي تظهر للمستخدم متى ما كان هناك خطأ ما وقت التشغيل , فذكرت أهمية إخفائها عن المستخدم وطريقة إخفائها, لأنها قد تكشف شيئا من خصوصية التطبيق,وفي المقابل كيفية تخزين هذه الأخطاء في ملف آمن بعيدا عن المستخدم من أجل الرجوع لها من قبل صاحب التطبيق لإيجاد حلول مناسبة لها.




المقدمة

لغة php تعتبر واحدة من أهم وأشهر لغات البرمجة لتطبيقات الويب من مواقع الكترونية وغيره, وكذلك من المعروف بأن هذه اللغة سهلة التعلم , فمن خلال الدروس المعروضة على الشبكة العنكبوتية بإمكان أي شخص لديه خلفية حتى وإن كانت بسيطة من إنشاء موقع وبرمجته بهذه اللغة , ولكن للأسف بالرغم من سهولتها إلا أن كثيراً من الأشخاص ولاسيما المبتدئين منهم تجاهلوا أمر كيفية الحماية أثناء البرمجة من المخترقين ونحوه ممن يستغل الثغرات الموجودة في التطبيق , فهذه اللغة معرضة لكثير من المخاطر التي تكسر حمايتها ومازالت هذه المخاطر في ازدياد مع استمرار الوقت , لذلك وُجدت أساسيات ومبادئ من أجل برمجة آمنة بإذن الله ,فمن هذا المنطلق وضعت هذه المقالة من أجل بيان أساسيات البرمجة الآمنة لهذه اللغة ,وإن كان المجال في هذا واسعا ولكن سأتطرق لأهم الأمور التي ينبغي مراعاتها لكل من لديه أو سينشئ مشروعا تطبيقيا بلغة php.




الكلمات المفتاحية

الثغرات , الاستعلام ,المهاجم , استدعاء الملفات , رسائل الخطأ.






1. تأمين المدخل في لغة php والتحكم به



1.1 التحقق من صحة المدخل
التحقق من تلك المدخلات خطوة ضرورية للحماية من المهاجمين وذلك من خلال التأكد من أن أي مستخدم يستطيع أن يدخل بياناته وفقا للنوع المحدد من قبل صاحب التطبيق فقط , ولا يسمح له بإدخال أي نوع آخر قد يشكل خطرا على التطبيق , حيث أن أشهر أنواع المهاجمين من يستغلون التطبيقات التي تخلو من عمليات التحقق ,فيتعمدون بإدخال بيانات خاطئة مثل : نوع خاطئ , حجم غير صحيح , بيانات تحتوي على رموز خاصة مثل:((escape أو بيانات بالصيغة الثنائية, مع العلم بأن إدخال البيانات بشكلٍ خاطئ قد يؤدي إلى تعطل التطبيق , كتابة بيانات غير صحيحة في قاعدة البيانات أو حذف بيانات منها , وسيكون المعنى أكثر وضوحا بذكر بعض الأمثلة الشائعة:
مثال-1- : لو كان أحد المدخلات لتطبيق ما هو إدخال تاريخ الميلاد , فلابد أن نتحقق من أن اليوم يأخذ القيمة الرقمية (1-30) , والشهر كذلك رقما مابين (1-12) , والسنة لابد أن تكون من أربع خانات وهكذا ,انظر صورة (1) , وفي حالة المخالفة لذلك يتم عرض رسالة خطأ مناسبة للمستخدم.انظر صورة(2). [3],[4]

اساسيات البرمجة الامنة في لغة PHP
صورة (1): مثال يوضح كيفية تأمين المدخل عن طريق التحقق من نوع البيانات المدخلة.

اساسيات البرمجة الامنة في لغة PHP
صورة (2): رسالة خطأ للمستخدم عند مخالفة المطلوب أثناء الإدخال

مثال -2- : في حالة أن التطبيق كان به محركاً للبحث ,وأراد المستخدم البحث عن كلمة معينة , أو عند تسجيل الدخول , وأدخل المستخدم كلمة البحث لكنه وضع مسافة من لوحة المفاتيح , سيؤدي ذلك إلى عرض جميع محتويات المكان الذي يبحث فيه , وبالتالي سيشكل هذا ضغطا على خادم التطبيق ومن ثم قد يؤدي إلى تعطله , فالحل هو عن طريق عملية التحقق من أن المدخل لا يحتوي على مسافات (فراغات) وذلك باستخدام الدالة trim() , انظر صورة(3). [10]

اساسيات البرمجة الامنة في لغة PHP
صورة (3): مثال للتحقق من عدم وجود فراغات أثناء الإدخال.



1.2 الحماية من الثغرات أثناء عملية الإدخال
"الثغرات هي أخطاء برمجية في برامج معينة مثل خادم الموقع وأي برامج أخرى ، لأنها من صنع البشر لذا
يجب أن تحتوي على أخطاء أو ( ثغرات) وهناك أنواع أخرى عبارة عن برامج مصممة ومكتوبة بلغات معينة
لاستغلال ثغرة معينة." [7]


1.2.1 الحماية من ثغرة البرمجة المتقاطعة للموقع
البرمجة المتقاطعة للموقع (Cross Site Scripting) ,اختصارها ((XSS, وفي بعض الأحيان يرمز لها بالرمزCSS) ) ,هذا النوع من الهجوم من أكثر الهجوم انتشارا في عالم الاختراق حيث يشكل بنسبة 25% من الهجوم, وهدفه هو السكريبتات ("مجموعة من الأوامر البرمجية ينتج عنها نظام إدارة متكامل حسب نوع الموقع والتوجه المطلوب") [11] المنفذة من جهة المستخدم, فهو يستغل البرمجة الغير آمنه ,وذلك بإرسال محتوى غير مرغوب فيه لمستخدم الموقع أو إلى المستخدم النهائي ومن ثم جمع معلومات عن الضحية , ويكون ذلك عن طريق استخدام أداة تعين ذلك المهاجم على ذلك مثل: السكريبتات المستخدمة خلال النماذج من جهة المستخدم (java script- Html –flash –Active X) وغيرها من الأدوات التي تضاف على التطبيق من أجل تصميم الواجهات وإضافة مزيد من الدينامكية للموقع, فيقوم المهاجم بحقن أو إضافة أمر html)) إلى أحد السكريبتات السابقة إذا كانت مصابة ,أي بها أخطاء برمجية من الناحية الأمنية ,ومن ثم يحصل الاختراق وسرقة المعلومات للتطبيق , وأحيانا من يشاهده أيضا , وهذه الثغرة منها نوعين:

1- ثغرة داخليه: يتم حقن الأمر داخل التطبيق نفسه مثل إدراج الأمر إلى صندوق الإهدائات للموقع.
2- ثغرة خارجية: يتم حقن الأمر من خارج التطبيق مثل عند إدخال رابط الموقع نفسه.
أما بالنسبة لحل هذا النوع من الهجوم ,فهناك عدة حلول منها:

1- متى ما اكتشف المبرمج وجود هذه النوعية من الثغرات في أوامر تطبيقه فإنه يقوم مباشرة بالتعديل,وذلك بمنع أوامر (HTML) من التنفيذ , باستخدام الوظيفة (Remove XSS()) , حيث تقوم هذه الوظيفة بعمل فلتره , أي حذف كل ثغرة من نوع ((XSS من أوامر التطبيق , ويتم وضع هذه الوظيفة في ملف من نوع ((PHP وتسميته بـ (XSS.PHP) ,ويقوم صاحب التطبيق بوضع هذا الملف في المجلد الذي يحوي ملف السكريبت المصاب , ثم وضع أمر واحد في أعلى الملف المصاب, وظيفته استدعاء الملف السابق وهو ( (include (xss.php); . [9],[10],[12]

2- كذلك من الحلول عمل فلتره وتصفية بالتحقق من صحة المدخل والبيانات التي تأتي من قبل المستخدم كما ذكرت في بداية هذا المقال.


3- استخدام وظائف خارجية مثل: (htmlentities(), strip_tags(),utf8_decode() ) والتي تعتبر فعالة وناجحة ,وتتميز بالسرعة وقلة الأخطاء التي تستغل ضد التطبيق , انظر صورة(4). [1]


اساسيات البرمجة الامنة في لغة PHP
صورة (4): أحد حلول التخلص من ثغرات XSS الفعالة.

1.2.2 الحماية من حقن SQL
هذا النوع من الثغرات أشد خطورة من ثغرات ((XSS ,ويسمى بحق الــ(SQL) , وسبب التسمية هو أنه يعتمد المهاجم على عملية حقن استفسار داخل الاستفسار الأساسي المطلوب ,بالتالي يتغير مجرى ذلك الاستفسار الأساسي ومن ثم يتم الإطلاع على معلومات وبيانات سريه وخاصة ليس له الحق بالإطلاع عليها مثل الرقم السري لصاحب التطبيق, أما بالنسبة لكيفية الحماية من هذا النوع من الهجوم فهناك بعضا من الحلول:
1- عملية تصفية للبيانات المدخلة من خلال الاستعلام , وذلك باستخدام الوظيفة ( filter_sql() ), انظر صورة(5).[9]

اساسيات البرمجة الامنة في لغة PHP
صورة (5): تصفية البيانات المدخلة لقاعدة البيانات باستخدام الوظيفة filter_sql().


2- في بعض الأحيان تكون البيانات المدخلة صحيحة لكنها تتضارب وتتعارض مع تنسيق جمل الاستعلام نفسها,فهذه مشكلة , ففي هذه الحالة من الأفضل استخدام الوظيفة mysql_escape_string() ) ) عند الاتصال بالخادم , انظر صورة(6).[3]

اساسيات البرمجة الامنة في لغة PHP
صورة (6): حل مشكلة التضارب مع تنسيق جمل الاستعلام بالرغم من أن البيانات المدخلة صحيحة


1.2.3 الحماية من ثغرات استدعاء الملفات
هذا النوع من الثغرات أخطر من XSS) ) ,وفي بعض الأحيان يكون أخطر من ثغرات SQL)) ,وذلك لأن خطرها ليس على المستخدم إنما على خادم التطبيق , ويكون ذلك الخطر عن طريق تغيير مسار أحد الملفات الأساسية المستدعاة إلى مسار ملفات خبيثة بأحد الدوال المشهورة مثل include)() ), انظر صورة (7), ومن ثم يكون للمخترق تحكماً شبه كامل بالتطبيق ,وأحيانا إذا كان ذلك المخترق من المحترفين فإنه يسيطر على الخادم بشكل كلي. [8]

هناك نوعان من استدعاء الملفات وهي:
1- تسمح باستدعاء ملفات من خارج الخادم.
2- تسمح باستدعاء ملفات من داخل الخادم كأن تكون محفوظة على شكل صورة.
الحل بكل بساطة هو القيام بإغلاق السجلات العامة الموجود في ملف ((php.ini ,انظر صورة(8) , لكن للأسف بما أن كثير من أصحاب التطبيقات قد اعتمدوا على الاستضافة المشتركة لتطبيقاتهم , لذلك لا يستطيعون التحكم بإغلاق تلك السجلات , فالحل هو أخذ إذن من المضيف بإعطاء القدرة على استخدام ملف htaccess)) ,ومن ثم وضع عملية الإغلاق داخل هذا الملف.[5]

اساسيات البرمجة الامنة في لغة PHP

صورة (7): الدوال المشهورة لاستدعاء الملفات والتي قد تشكل خطرا على أمن الموقع إذا استخدمت بشكل خاطئ.


اساسيات البرمجة الامنة في لغة PHP
صورة (8): إغلاق register_globals من أجل الحماية من ثغرات استدعاء الملفات.


2. إخفاء رسائل الخطأ

المقصود برسائل الخطأ , هي التي تظهر للمستخدم عندما يكون هناك خطأ ما وقت التشغيل , مثل : استخدام غير صحيح لوظيفة معينة , أو خطأ إملائي لأحد المتغيرات وغيرها من الأخطاء , انظر صورة (9) , فرسائل الخطأ من الأمور المهمة, فهي تخبرنا ما هو الخطأ وأين يوجد هذا الخطأ ,,لكن هذه الرسائل قد تكون سببا لمعرفة المستخدمين وخاصة المهاجمين منهم لمعلومات مهمة عن النظام وبالتالي استغلال نقاط ضعف هذا التطبيق, مثلٍ:عرض اسم ومسار ملف السكريبت الذي به الخطأ, اسم الوظيفة التي كان بها الخطأ و رقم السطر الذي احتوى الخطأ ,فيتعمد المهاجم للوقوع في الأخطاء من أجل الحصول على تلك المعلومات التي تفيده في كسر حماية هذا التطبيق , فلذلك لابد من إخفاء كل رسائل الخطأ عن المستخدمين للتطبيق , ويكون ذلك الإخفاء عن طريق إيقاف التوجيهات الخاصة بعرض الأخطاء التي تحدث وقت التشغيل فقط, انظر صورة (10)
لكن في المقابل عند حصول أي خطأ , فالمبرمج أو صاحب التطبيق مازال بحاجة إلى معرفة هذا الخطأ لمعالجته وحله , فلذلك لابد من التأكد من تسجيل كل الأخطاء في ملفات محمية , وهذا يتم عن طريق استخدام موجهات معينه لتسجيل الأخطاء بشكل دائم ,انظر صورة(11).
يوجد أربعة موجهات مسئولة عن التحكم بعمليه عرض الأخطاء وتسجيلها, ينبغي إعدادها بالشكل المطلوب, انظر جدول(1). [2],[3],[6]

اساسيات البرمجة الامنة في لغة PHP
صورة (9): مثال لرسالة خطأ تظهر للمستخدم وقت التشغيل

اساسيات البرمجة الامنة في لغة PHP
صورة (10): إيقاف عرض الأخطاء عن المستخدم وقت التشغيل

اساسيات البرمجة الامنة في لغة PHP
صورة (11): تمكين تسجيل الأخطاء في ملفات محمية باستمرار.


جدول (1): الموجهات المسئولة عن عرض الأخطاء وتسجيلها ,وتوضيح قيمها المطلوبة.


اساسيات البرمجة الامنة في لغة PHP


الخلاصة

في هذا المقال تحدثت عن بعض الأساسيات والأمور المهمة التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة php من أجل الحصول على بيئة آمنه من المخترقين وغيرهم ممن ليس لهم الصلاحية للوصول لبعض البيانات والمعلومات الخاصة بالتطبيق ,ومن أهم هذه الأساسيات حماية وتأمين المدخل الذي يكون من قبل مستخدمي التطبيق ,وكذلك ما يخص رسائل الخطأ وأثرها على كشف شيء من خصوصية التطبيق , وأحب أن أنوه أنه في حالة افتراض صاحب التطبيق بأن تطبيقه لن يواجه أي نوع من الهجوم أو المخترقين أو المشاكل , ومن ثم واجه أي نوع منها فإن ذلك سيكلفه الكثير والكثير, ومن جهة أخرى متى ما اهتم صاحب التطبيق بحماية تطبيقه وأخذ الاستعدادات اللازمة أثناء البرمجة وبعدها لمواجهة أي نوع من الهجوم فإن ذلك سيجعل التطبيق أكثر أمانا.



السلام وعليكم ورحمة الله وبركاتة
أخوكم في الله
جريح الشوق

أضيفت بتاريخ 27 - 08 - 2010 عند الساعة : 13:40
رقم المشاركة # 2
:: عضـــو::
تاريخ الإنضمام: 14 - 01 - 2010
رقم العضوية : 75949
الإقامة: الجزائر
العمر: 22
المشاركات: 83
قوة السمعة : 50
أرسل رسالة بواسطة MSN إلى QUIK SERVICES أرسل رسالة بواسطة Skype™ إلى QUIK SERVICES
افتراضي

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

The Magician

قريبا إن شاء الله :
--> السآحر للخدمات البرمجية مع أفضل الأسعار و سكريبتات إحترافية .
OOP PHP , CSS3 , XHTML , jQuery , Ajax , JavaScript , MySql
سكريبتك كما تتمناه أنت وبأحدث الحركات
أضيفت بتاريخ 27 - 08 - 2010 عند الساعة : 15:18
رقم المشاركة # 3
Banned
تاريخ الإنضمام: 13 - 08 - 2005
رقم العضوية : 7173
العمر: 32
المشاركات: 676
قوة السمعة : 57
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
افتراضي

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

أخوك
جريح الشروق .

أضيفت بتاريخ 27 - 08 - 2010 عند الساعة : 18:56
رقم المشاركة # 4
:: عضو نشيط ::
صورة 'الشرقاوي للبرمجة' الرمزية
تاريخ الإنضمام: 15 - 07 - 2009
رقم العضوية : 66239
الإقامة: المملكة العربية...المغربية طبعا
المشاركات: 4,535
قوة السمعة : 1224
افتراضي

ممتاز جدا ، خصوصا الفقرة الأخيرة بخصوص إخفاء الأخطاء

(ملاحظة صغيرة : empty و isset واحدة منهم تكفي على ما أعتقد)

إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

أضيفت بتاريخ 27 - 08 - 2010 عند الساعة : 19:32
رقم المشاركة # 5
:: عضو نشيط ::
صورة 'ابو عقيلي' الرمزية
تاريخ الإنضمام: 15 - 07 - 2009
رقم العضوية : 66471
الإقامة: حآيل
العمر: 94
المشاركات: 2,001
قوة السمعة : 957
افتراضي

بارك الله فيك جاري القراءة بس يا ليت توضح فائدة دوال الحماية (htmlentities(), strip_tags(),utf8_decode() ) واي دوال حماية اخرى

أضيفت بتاريخ 27 - 08 - 2010 عند الساعة : 20:09
رقم المشاركة # 6
:: عضو نشيط ::
صورة 'Dr.MathDev' الرمزية
تاريخ الإنضمام: 15 - 10 - 2009
رقم العضوية : 72453
الإقامة: بجوار الاندلس !!
المشاركات: 1,973
قوة السمعة : 530
افتراضي

ممتاز جدا ، خصوصا الفقرة الأخيرة بخصوص إخفاء الأخطاء

(ملاحظة صغيرة : empty و isset واحدة منهم تكفي على ما أعتقد)

السلام عليكم

isset لا تكفي وحدها اسي محمد ، لانه يتاكد ليس من كونه يحمل قيمة ، بل هل هو موجود ،
رمز PHP:
index.php?do= 
لو عملت عليها
رمز PHP:
 isset($_GET['do']) 
راح يعطيك true ، اما ان كنت تريد التحقق من قيمتها هل هي فارغة ام لا فهناك دور empty

-------
بالنسبة لاخفاء الاخطاء ، اعذرني هذه ليست مجدية ، ، حتى وان عدت الى واقعك ، الا اذا كنت تسجلها بملف لكي تراجع اخطاء السكربت ،

شوف معي
هذاالخطا ، ماسببه ، اكيد لكل خطا سبب ، والحل يمكن في اخفاءها ليس اوتوماتيكيا ، لكن يديويا ، يعني تشوف سبب ظهور الخطا وتقوم بحله بنفسك ، كما ان اخفاء الاخطاء رايح يعمل لك ثقل في الموقع ان كانت كثيرة ، وربما بعضها يسبب اخطاء الهيديرز ،


--------
شكرا صاحب الموضوع ـ، موضوع قيم ،
جاري اتمام القراء ة ،

أستغفر الله ، أستغفر الله
[/CENTER]
أضيفت بتاريخ 28 - 08 - 2010 عند الساعة : 09:32
رقم المشاركة # 7
Banned
تاريخ الإنضمام: 13 - 08 - 2005
رقم العضوية : 7173
العمر: 32
المشاركات: 676
قوة السمعة : 57
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
افتراضي

بارك الله فيكم
اشكركم جميعا على المرور

أضيفت بتاريخ 28 - 08 - 2010 عند الساعة : 16:21
رقم المشاركة # 8
:: عضو نشيط ::
صورة 'T4mer' الرمزية
تاريخ الإنضمام: 04 - 04 - 2008
رقم العضوية : 55960
الإقامة: فلسطين - غزة
المشاركات: 894
قوة السمعة : 239
افتراضي

اقتباس
هذاالخطا ، ماسببه ، اكيد لكل خطا سبب ، والحل يمكن في اخفاءها ليس اوتوماتيكيا ، لكن يديويا ، يعني تشوف سبب ظهور الخطا وتقوم بحله بنفسك ، كما ان اخفاء الاخطاء رايح يعمل لك ثقل في الموقع ان كانت كثيرة ، وربما بعضها يسبب اخطاء الهيديرز ،
ربما يقصد إخفاء الأخطاء عن المخترق لكي لا يستغلها .
أنا اقوم دائماً بإخفاء الثغرات من ال php.ini للسيرفر .

شكراً أخي على الموضوع .
بارك الله فيك


لم يعد يمكن أن أبقى هنا ،،

فهنا يبكي على بعضي بعضي

أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 06:36
رقم المشاركة # 9
:: عضو نشيط ::
صورة 'الشرقاوي للبرمجة' الرمزية
تاريخ الإنضمام: 15 - 07 - 2009
رقم العضوية : 66239
الإقامة: المملكة العربية...المغربية طبعا
المشاركات: 4,535
قوة السمعة : 1224
افتراضي

السلام عليكم

isset لا تكفي وحدها اسي محمد ، لانه يتاكد ليس من كونه يحمل قيمة ، بل هل هو موجود ،
رمز PHP:
index.php?do= 
لو عملت عليها
رمز PHP:
 isset($_GET['do']) 
راح يعطيك true ، اما ان كنت تريد التحقق من قيمتها هل هي فارغة ام لا فهناك دور empty

،

قل لي

هل يوجد فرق بين :

رمز PHP:
 
if(isset($_GET['do']))
{

و

رمز PHP:
 
if(!empty($_GET['do']))
{
 

كلا ما وضعته له نفس الغرض (الإختلاف في طريقة التحقق)

هل لازلت مُتأكدا أن واحدة لا تكفي ؟

لأنك ذكرت أنه يجب علينا :

التحقق أنه موجود

والتحقق أنه غير فارغ

وهذا نفس شيئ إذا كان غير فارغ فهو موجود وإذا كان موجود فهو غير فارغ

(أنا فهمت قصدك ، لكن واحدة تكفي كما ذكرت ! وحسب ما ذكرته فالـempty تكفي)

إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

التعديل الأخير كان بواسطة الشرقاوي للبرمجة; 29 - 08 - 2010 الساعة 06:45
أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 07:49
رقم المشاركة # 10
:: عضو نشيط ::
صورة 'Dr.MathDev' الرمزية
تاريخ الإنضمام: 15 - 10 - 2009
رقم العضوية : 72453
الإقامة: بجوار الاندلس !!
المشاركات: 1,973
قوة السمعة : 530
Idea

قل لي

هل يوجد فرق بين :

رمز PHP:
 
if(isset($_GET['do']))
{

و

رمز PHP:
 
if(!empty($_GET['do']))
{
 

كلا ما وضعته له نفس الغرض (الإختلاف في طريقة التحقق)

هل لازلت مُتأكدا أن واحدة لا تكفي ؟

لأنك ذكرت أنه يجب علينا :

التحقق أنه موجود

والتحقق أنه غير فارغ

وهذا نفس شيئ إذا كان غير فارغ فهو موجود وإذا كان موجود فهو غير فارغ

(أنا فهمت قصدك ، لكن واحدة تكفي كما ذكرت ! وحسب ما ذكرته فالـempty تكفي)

السلام عليكم محمد اخي / ،،

ناخد كمثال المتغيرات ـ عند اجراء التحقق على متغير بالدالتين ،
الكثير يقع في الخلط بين هاتين الدالتين اللتان تتشابهان قليلا ،

الدالة empty :

bool empty ( mixed var )
اذا كانت قيمة $var ، فارغة ، او كانت تساوي 0 ، يكون ناتجها ، True
ماذا تعني قيمة فارغة داخل الدالة empty ؟؟
القيمة الفارغة التي تعتبرها الدالة هي :
  • []‘ ‘
  • []0
  • []'0'
  • []False
  • []مصفوفة فارغة array
  • []Null
  • متغير فارغ داخل كلاس ،
اما بالنسبة ل isset
وظيفتها تتحقق حسب ماورد في المانويل ، هل المتغير موجود يعني هل هو محدد ، وليس Null ،
خذ معي مثال ،
انت تقول ان !empty تكفي وحدها في كل الحالات ،


انا اريد اتحقق من متغير هل هو محدد يعني هل هو موجود ،
  • كل موجود ليس بالضرورة غير فارغ
  • كل متغير غير فارغ هو بالتاكيد موجود ،
  • كل متغير غير موجود لايمكن ان يكون فارغ << فلسفية شوية
  • كل متغير لايحمل قيمة ، فهو موجود ،


انا اريد اتحقق فقط من القيمة هل هي متواجدة ، بغض النظر عن انها تحمل قيمة او لاتحملها ، empty لن تفيد هذه الحالة ، وانت تقول انها تكفي ،
لو كان كلامك صحيحا لقام المسؤولون في php باقتلاع isset ان صح التعبير ،

خلاصة القول ،
عندما تريد ان تتاكد من القيمة لمتغير فارغة ولا لا ، استعمل empty
عندما تريد ان تتاكد ان المتغير محدد وليس Null بغض النظر عن قيمته هل هي فارغة ولا لا ، استعمل isset ، ملاحظة null لا تعني فارغ ،

اعتذر من صاحب الموضوع على طول الرد ،
محمد : لك مني اجمل تحية ، فهمت ماترمي اليه ، ونخليه افادة للاخرين ;) ،

أستغفر الله ، أستغفر الله
[/CENTER]
أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 11:02
رقم المشاركة # 11
Banned
تاريخ الإنضمام: 13 - 08 - 2005
رقم العضوية : 7173
العمر: 32
المشاركات: 676
قوة السمعة : 57
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
افتراضي

جزاكم الله خير
ومشكورين على المرور

أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 12:50
رقم المشاركة # 12
:: عضـــو::
صورة 'abyhafs' الرمزية
تاريخ الإنضمام: 03 - 03 - 2010
رقم العضوية : 78969
الإقامة: القاهرة - مصر ( حرسها الله )
المشاركات: 110
قوة السمعة : 57
أرسل رسالة بواسطة MSN إلى abyhafs أرسل رسالة بواسطة Yahoo إلى abyhafs أرسل رسالة بواسطة Skype™ إلى abyhafs
افتراضي

بارك الله فيكم

درس مفيد

اسم الشركة : دار حفص للبحث العلمي وتحقيق التراث
صاحب الشركة : أبو حفص المسندي القاهري
أداء الشركة : صف - تخريج أحاديث - تحقيق مخطوطات - تنسيق - بحث علمي - مراجعة لغوية - تصميم - برمجة - دعم فني
بريد صاحب الشركة : [email protected]
رابط عروض الشركة : http://www.mosndy.net/dar-hafs/
هاتف : 00201222732826 - 00201142710041
--------------------------------

موقع أهل الإسناد لعلوم الحديث الشريف
www.ahlalisnad.com
موقع المسندي للعلوم الشرعية
www.mosndy.net
أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 13:37
رقم المشاركة # 13
:: عضـــو::
تاريخ الإنضمام: 14 - 01 - 2010
رقم العضوية : 75949
الإقامة: الجزائر
العمر: 22
المشاركات: 83
قوة السمعة : 50
أرسل رسالة بواسطة MSN إلى QUIK SERVICES أرسل رسالة بواسطة Skype™ إلى QUIK SERVICES
افتراضي

اخوي الشرقاوي
كما قال الاخ جريح الشوق يوجد اختلاف واضح جدا

The Magician

قريبا إن شاء الله :
--> السآحر للخدمات البرمجية مع أفضل الأسعار و سكريبتات إحترافية .
OOP PHP , CSS3 , XHTML , jQuery , Ajax , JavaScript , MySql
سكريبتك كما تتمناه أنت وبأحدث الحركات
أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 17:43
رقم المشاركة # 14
Banned
تاريخ الإنضمام: 13 - 08 - 2005
رقم العضوية : 7173
العمر: 32
المشاركات: 676
قوة السمعة : 57
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
افتراضي

مشكورين جميعا على المرور
انتظرو الإبداع القادم

أضيفت بتاريخ 29 - 08 - 2010 عند الساعة : 17:47
رقم المشاركة # 15
:: عضو نشيط ::
صورة 'الشرقاوي للبرمجة' الرمزية
تاريخ الإنضمام: 15 - 07 - 2009
رقم العضوية : 66239
الإقامة: المملكة العربية...المغربية طبعا
المشاركات: 4,535
قوة السمعة : 1224
افتراضي

السلام عليكم محمد اخي / ،،

ناخد كمثال المتغيرات ـ عند اجراء التحقق على متغير بالدالتين ،
الكثير يقع في الخلط بين هاتين الدالتين اللتان تتشابهان قليلا ،

الدالة empty :

bool empty ( mixed var )
اذا كانت قيمة $var ، فارغة ، او كانت تساوي 0 ، يكون ناتجها ، True
ماذا تعني قيمة فارغة داخل الدالة empty ؟؟

القيمة الفارغة التي تعتبرها الدالة هي :

  • []‘ ‘

  • []0

  • []'0'

  • []False

  • []مصفوفة فارغة array

  • []Null
  • متغير فارغ داخل كلاس ،
اما بالنسبة ل isset
وظيفتها تتحقق حسب ماورد في المانويل ، هل المتغير موجود يعني هل هو محدد ، وليس Null ،
خذ معي مثال ،
انت تقول ان !empty تكفي وحدها في كل الحالات ،



انا اريد اتحقق من متغير هل هو محدد يعني هل هو موجود ،
  • كل موجود ليس بالضرورة غير فارغ
  • كل متغير غير فارغ هو بالتاكيد موجود ،
  • كل متغير غير موجود لايمكن ان يكون فارغ << فلسفية شوية
  • كل متغير لايحمل قيمة ، فهو موجود ،

انا اريد اتحقق فقط من القيمة هل هي متواجدة ، بغض النظر عن انها تحمل قيمة او لاتحملها ، empty لن تفيد هذه الحالة ، وانت تقول انها تكفي ،
لو كان كلامك صحيحا لقام المسؤولون في php باقتلاع isset ان صح التعبير ،

خلاصة القول ،
عندما تريد ان تتاكد من القيمة لمتغير فارغة ولا لا ، استعمل empty
عندما تريد ان تتاكد ان المتغير محدد وليس Null بغض النظر عن قيمته هل هي فارغة ولا لا ، استعمل isset ، ملاحظة null لا تعني فارغ ،

اعتذر من صاحب الموضوع على طول الرد ،
محمد : لك مني اجمل تحية ، فهمت ماترمي اليه ، ونخليه افادة للاخرين ;) ،
عليكم السلام

كلامك صحيح تماما ولا أخالفك فيما قلته إلا البعض

بغظ النظر أنط ذهبت بعيدا شيئا ما ، فهنا نتعامل مع المُداخلات فقط

وempty() هي المناسبة تماما

فعند وضعك لـ:

رمز PHP:
 
?do=
فسوف تعرف الـempty أنه فارغ

أما isset فلا

ولاحظ معي ، عندما تستخدم empty فإذا لم يكن do أصلا موجودا فسوف يرجع true ، يعني نفس وظيفة isset (عند استخدامها في المُداخلات ) ، لذلك فاستخدامنا لـisset مع empty هو شيئ زائد فقط لا غير

أتمنى تكون فهمت قصدي

إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

اضافة رد

العلامات المرجعية

أدوات الموضوع
طرق العرض

غلق/فتح (الكل) ضوابط المشاركة
لا يمكنك اضافة مواضيع جديدة
لا يمكنك اضافة مشاركات
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

رمز [IMG] : متاحة
رمز HTML : معطّلة
المراجع : معطّلة
Refbacks are متاحة



الساعة معتمدة بتوقيت جرينتش +3 . الساعة الآن : 13:14.
المعهد غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي معهد ترايدنت ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)


Powered by vBulletin® Version 3.8.7 .Copyright ©2000 - 2014, Jelsoft Enterprises Ltd
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Google

SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.