| تابع موضوعات المنتدى | الانتساب | تعليمات س - ج | قائمة الأعضاء | المفكرة | بحث | مواضيع اليوم | إشارة الأقسام مقروءة |
| مواقع صديقة: تعلم البي اتش بي - تصميم نت - أفضل استضافة |
| ||||||
| دروس متقدمة دروس وأكواد متقدمة لتعليم (بي اتش بي) PHP مستوى متقدم |
![]() |
| | LinkBack | أدوات الموضوع | طريقة العرض |
| | #1 (permalink) |
| مشرف قسم لغة بي اتش بي PHP |
السلام عليكم ورحمة الله وبركاته نبذة عن المشكلة مشكلة register_globals حدثت بعد طرح الاصدار PHP v.4.2.1، حيث تم جعل القيمة الافتراضية لـ register_globals تساوي off، مما أدى الى توقف الكثير والكثير من السكريبتات المطروحة قبل هذا الوقت والتي كانت تعتمد في عملها على الوضعية on لـ register_globals. ولكن لماذا تم تغيير القيمة الافتراضية لهذه الخاصية؟ مما هو معروف لأي مبرمج متمرس ان هذا التغيير هو اكبر تغيير حدث في لغة PHP منذ انشائها، وهو لم يكن وليد الصدفة ولكن القرار كان صعب بالنسبة لمجتمع PHP لأن المشكلة هنا تتعلق بأمن البرمجة. نعم المشكلة تتعلق بالأمن، لأن ترك الخاصية register_globals في الوضع on هو بمثابة ثغرة امنية خطيرة جداً، تؤدي الى وصول اي متصفح للسكريبت الى بيانات غير مصرح له برؤيتها. وإليك هذا المثال لتوضيح خطر تشغيل الخاصية: كود PHP: اما عند ايقاف الخاصية، فلا يمكن تمريرها لان المتغير الممرر في الرابط ستكون الاشارة اليه بالاسم $_GET['admin'] بدلا من $admin. كيف تتصرف حيال السكريبتات القديمة التي لا تعمل؟ 1- تحديث السكريبت بتركيب اصدار جديد او تحديث الاكواد يدوياً وهو الحل الأمثل والأفضل، حيث يتوافر لديك خيارين:
يمكنك تعديل الملف الذي لا يعمل عن طريق اضافة الكود التالي الى بداية الملف: كود PHP: بالرغم من خطورة هذه الطريقة لما يترتب عليها من ثغرات في السكريبت، إلا أنها تبقى طريقة ناجحة وفعالة لتشغيل السكريبت على مسئوليتك الخاصة. تقوم في هذه الطريقة برفع ملف htacces. يحتوي على الكود التالي: كود: php_flag register_globals on
__________________ لضمان رد سريع على استفسارك أو موضوعك * تأكد من البحث في المنتدى قبل أن تسأل * احرص على أن تنتقي العنوان المناسب لموضوعك أو سؤالك * قم بصياغة سؤالك بطريقة واضحة مع ذكر تجربتك ومكان الخطأ فيها |
| | |
| | #5 (permalink) |
| مشرف قسم لغة بي اتش بي PHP | مشكورين اخواني وجزاكم الله كل خير
__________________ لضمان رد سريع على استفسارك أو موضوعك * تأكد من البحث في المنتدى قبل أن تسأل * احرص على أن تنتقي العنوان المناسب لموضوعك أو سؤالك * قم بصياغة سؤالك بطريقة واضحة مع ذكر تجربتك ومكان الخطأ فيها |
| | |
| | #6 (permalink) | |
| عضو جديد تاريخ الانتساب: 05-02-2007
مشاركات: 35
مستوى السمعة : 0 ![]() |
اخوي coder بصراحه ابدعت وجزاك الله خير ولكن عندي استفسار عندي سكربت فرضا لا يعمل الا اقوم برفع ملف htacces. يحتوي على الكود التالي: كود: php_flag register_globals on اقتباس:
كود PHP: كود PHP: وايضا المتغير هذا كود PHP: مع العلم اني السكربت الذي لدي بصفحة العرض اقوم بعمل متغير عادي حتى يعرض لي المحتوى . واسف للاطاله قام بآخر تعديل normal يوم 05-02-2007 في 04:39 PM | |
| | |
| | #7 (permalink) | ||
| مشرف قسم لغة بي اتش بي PHP |
أهلا ومرحبا اخي الكريم اقتباس:
اقتباس:
ان تستخدم المصفوفتين $_GET و $_POST لاستقبال هذه المتغيرات بمعنى لو كان رابط السكريبت بهذا الشكل: index.php?action=register وهو يعبر عن المتغير action ممرر بالطريقة GET ... فلا تستقبل قيمة المتغير بالطريقة $action بل استخدم بدلا منها كود PHP:
__________________ لضمان رد سريع على استفسارك أو موضوعك * تأكد من البحث في المنتدى قبل أن تسأل * احرص على أن تنتقي العنوان المناسب لموضوعك أو سؤالك * قم بصياغة سؤالك بطريقة واضحة مع ذكر تجربتك ومكان الخطأ فيها | ||
| | |
| | #8 (permalink) |
| عضو جديد تاريخ الانتساب: 05-02-2007
مشاركات: 35
مستوى السمعة : 0 ![]() |
تسلم اخوي coder وقواك الله بمعنى ان المتغير سيصبح بالشكل النهائي هكذا $action = $_GET['action']; ========= طيب معلش ياغالي لازم استوعب الشغله علشان ترسخ المعلومه وعملت مثال على هالطريقه اللي شرحتها انت وما ادري هل صحيحه ام لا !! كود PHP: وما الفرق بين كلا من GET و POST أو كلاهما يلبي الغرض !! وشاكر لك سعة صدرك |
| | |
| | #9 (permalink) | |||
| مشرف قسم لغة بي اتش بي PHP | اقتباس:
اقتباس:
والاستعلامات أيضاً صحيحة ولا يجب أن تستخدم هنا في هذا المثال المتغيرات GET في الاستعلام ولكن مثلا في حال انك تريد عرض بيانات عن العميل رقم 15 في عملاء الشركة فيصبح مثلا رابط السكريبت المسئول عن ذلك بهذه الطريقة show.php?customer=15 فتقوم انت باستقبال قيمة رقم العميل من الرابط والاستعلام عنها في الداتابيز كالتالي: كود PHP: اقتباس:
الفرق بينهما واضح جداً فالمصفوفة GET تعبر عن المتغيرات الممررة في رابط السكريبت مثل المثال السابق اما المصفوفة POST فتعبر عن المتغيرات الممررة في النماذج من النوع POST مثل النماذج التي تستخدم لتسجيل الدخول او لتغيير كلمات المرور او اي حالة لا نريد البيانات ان تظهر في رابط الملف، حيث انها لا تظهر المتغيرات في رابط الملف مثل الطريقة GET (اقرأ أكثر عن النماذج GET و POST) وان شاء الله اقوم بوضع دروس توضح انواع النماذج وفيم يستخدم كل نوع قريبا جداًً.... تحياتي لك
__________________ لضمان رد سريع على استفسارك أو موضوعك * تأكد من البحث في المنتدى قبل أن تسأل * احرص على أن تنتقي العنوان المناسب لموضوعك أو سؤالك * قم بصياغة سؤالك بطريقة واضحة مع ذكر تجربتك ومكان الخطأ فيها | |||
| | |
![]() |
| زوار هذا الموضوع الآن : 1 (0 عضو و 1 ضيف) | |
(View-All)
Members who have read this thread : 17
| |
| محمد اليماني, alQana9, السولافي, Dap, dr.hussein, Dreamweaver, بلال كيالي, faris3d, يوسف الحمود, magoo_2003, Oh Yeah, rammstein, Sinator Programmer, Tamem Graphics, علي عبدالعزيز, غزوان, همام نداف |
| أدوات الموضوع | |
| طريقة العرض | |
|
|