منتديات رحيل لكل العرب

منتديات رحيل لكل العرب (https://r7il.com/vb/)
-   قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress (https://r7il.com/vb/f20/)
-   -   الكود الخاص بتضمين الصفحات (https://r7il.com/vb/t3915/)

الفارس 09-04-2019 11:07 AM

الكود الخاص بتضمين الصفحات
 
هناك دوال أخرى للتضمين كـ include_once أي تضمين الملف مرة واحدة فقط إذا كان هناك نسخة أخرى مضمَّنة من نفس الملف فإستخدام include تسبب أخطاء التضمين المتتالي لنفس الملف أي الدخول في حلقة مغلقة لعملية تضمين الملف إذا تم تضمين الملف داخل نفسه أو شئ من هذا القبيل , ودالة require تعني أن هذا الملف مطلوب للإستمرار في معالجة باقي الكود وإلا لا يتم تنفيذ باقي الكود ويتم الخروج بعكس دالة include فيصدر خطأ عدم تضمين الملف ويتم معالجة باقي الكود , وهناك أيضاً دالة require_once على غرار دالة include_once .


ولكن قيم متغيرات الروابط كما نعلم يمكن تغييرها من خلال الرابط مما يجعل الرابط عرضة لتضمين ملفات خارجية وهو ما يعرف بثغرة RFI :ph34r: ولكن في نسخ php الحالية فالضبط الإفتراضي يمنع تضمين ملف خارجي من خادم أخر , وهناك أيضاً ثغرة تعرف بـ LFI وهي الوصول لتشغيل ملف ما على جهاز الخادم للحصول على بيانات ما أو تعديل ملف ما ومن خلال هذه الثغرة يمكن التحكم الكامل بجهاز الخادم , ولتلاشي هذه الثغرة إما أن تقوم بفلترة القيم التي يتم جلبها من الروابط أو تضمين ملفات بالإعتماد على قيمة متغير في الرابط وليكن المعرف id وعلى هذا تصبح الروابط السابقة على النحو التالي :

<div class="header"> <a href="index-page.php"> الرئيسية </a> <a href="index-page.php?id=1"> عن الموقع </a> <a href="index-page.php?id=2"> الأخبار </a> <a href="index-page.php?id=3"> جديد الموقع </a> <a href="index-page.php?id=4"> للإتصال بنا </a></div>
والكود الخاص بتضمين الصفحات سيكون على الشكل التالي :

<div class="content"> <?php if(isset($_GET['id'])) { switch($_GET['id']) { case '1': include('about-site.php'); break; case '2': include('news.php'); break; case '3': include('new.php'); break; case '4': include('contactus.php'); break; default: echo '<h1 style="color:#F00;"> معرف صفحة خاطئ </h1>'; } } else { echo '<h1> محتوى الصفحة الرئيسية </h1>'; } ?></div>
وهذا رابط تنزيل الملف بعد التعديلات :
site3.zip


ومن ملاحظتنا نجد أن اسم الصفحة أو الـ title دائماً هو "الصفحة الرئيسية" , أترك لكم هذا لتغييره ليعبر عن محتوى كل صفحة بنفس الطريقة السابقة

ملاحظة : توجد طرق أخرى لعملية تضمين الملفات منها أن يوضع راس الصفحة في صفحة منفصلة وأيضاً تززيل الصفحة وقائمة الروابط كلاً في صفحة منفصلة وتتم عملية تضمين هذه الصفحات ضمن صفحات الموقع وفي حال التعديل على أي من هذه الصفحات هو بمثابة التعديل على الموقع ككل .

ارسال المتغيرات عبر النماذج :
- النماذج في HTML هي وحدات لجلب البيانات من المستخدمين وكأمثلة عليها : عمليات تسجيل الدخول و تسجيل مستخدم جديد وتحتوي على العديد من عناصر الإدخال والإختيار على حسب الحاجة .
- أهم خصائص وسم النموذج form هي خاصية الـ action وقيمته تكون مسار ملف معالجة البيانات المرسلة من النموذج والخاصية method وهي نوع الإرسال إما POST أو GET وغالباً ما تستخدم الطريقة POST والفرق بينها وبن GET هي أن الطريقة POST تستخدم مع البيانات كبيرة الحجم .
- يتم ارسال التعرف على عناصر النموذج المرسلة من خلال خاصية الاسم name
ولجلب البيانات المرسلة في ملف المعالجة نستخدم المتغير المعرف مسبقاً في php وهو $_POST وهو عبارة عن مصفوفة تحتوي على البيانات المرسلة من النموذج .
والتالي نموذج به اسم المستخدم وكلمة المرور وذر لإرسال البيانات :

<form action="submit.php" method="POST"> <label>اسم المستخدم :</label> <input type="text" name="username"><br> <label>كلمة المرور : </label> <input type="password" name="password"><br> <input type="submit" value="أدخل القيم"></form>
- ملف معالجة البيانات هو submit.php ونوع الإرسال هو POST
- الوسم input هو أحد الوسوم الخاصة بوسم الـنموذج ولا يحتاج لوسم إغلاق ومن خواص هذا الوسم النوع type وهو نوع الحقل والخاصية name وهي اسم الحقل والذي من خلاله نستطيع جلب البيانات لهذا الحقل من ملف المعالجة .
- قمنا بعمل حقلين أحدهما من النوع text أي نص والأخر نوعه password أي حقل كلمة مرور
- والحقل الأخير من نوع submit أي ذر إرسال البيانات لملف المعالجة وبه الخاصية value وهي القيمة التي تظهر على الذر ويمكن إستخدام هذه الخاصية للحقول السابقة لوضع قيم إفتراضية للحقول .

-داخل ملف المعالجة submit.php سنضع الكود التالي لطباعة القيم الموجودة في المصفوفة $_POST :

<?phpforeach($_POST as $key=>$value){ echo $key.': '.$value.'<br>';}?>


الساعة الآن 04:12 AM

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2010, Crawlability, Inc. TranZ By Almuhajir

Security team