اجعل رورو44 صفحتك الرئيسية | احفظ رورو44 في مفضلتك | ارسل رورو44 إلى صديقك | أعلن على رورو44 | English Interface

 

 

 

شات خدمات مسجات جوال بطاقات رسائل حب دليل مواقع شات خليجي  دردشة منتديات حسناء الفارس عالم الرومانسية

مواقع سعودية | مواقع كويتية | مواقع بحرينية | مواقع قطرية | مواقع عمانية | مواقع يمنية | مواقع عراقية | مواقع اماراتية

 
    دروس في برمجة المواقع  البي اتش بي - PHP
 

 

حماية مناطق بنظام الجلسات session



بسم الله الرحمن الرحيم
 

أخواني وأخواتي أعضاء وزوار الموسوعة العربية للكمبيوتر والإنترنت تحية طيبة وبعد .

أقدم لكم اليوم معلومة قد تكون جديدة إلى حد ما والذي جعلني اقول عنها جديدة هي انعدام التحدث عنها إلى حد ما مما يجعلها نقطة غامضة عند الكثير من المبرمجين الجدد الذين يرغبون برفع مستواهم او التقدم او إيجاد حلول وطرق جديدة وسأتحدث في هذه الجلسة عن أحد إستخدامات الـ Session (الجلسات) الكثيرة وسيكون العمل عبارة عن طريقة لحماية أكثر من صفحة باسم مستخدم وكلمة مرور وبواسطة سطرين بكل مل بالإضافة الى ملف الأوامر ، بسم الله نبدأ .

أولا : ما الفائدة من إستخدام هذا الأسلوب ؟

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

ثانيا : هل هو آمن وكافي ؟

نعم حيث انه يسجل قيم في الجهاز ولا يمكن تجاوزه إطلاقا وهو عملي وبسيط جدا .

ثالثا : الطريقة والتنفيذ

في هذه الجلسة لن نستخدم الأساليب التقليدية بل سنخرج عن الروتين قليلاً ، أول خطوات هذا العمل هي عمل نموذج لدخول للمنطة المراد تنفيذ الأمر عليها وينصح بشدة أن تكون عبارة عن دالة Function وذلك يلعب دول كبير وساشرح هذه النقطة ،

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

function initlogin($header) {
   print("<br><br>") ;
   print("<table align=center width=50% bgcolor=#C7933F border=1 bordercolor=#CCCCCC>") ;
   print("<tr><td align=center class=detailstyle>$header</td></tr>") ;
   print("<tr><td align=center>") ;
   print("<form action=index.php method=post>") ;
   print(" <table align=center width=100% bgcolor=#C7933F border=1 bordercolor=#CCCCCC>") ;

   print("  <tr><td align=right class=detailstyle>ÃÏÎá ÇÓã ÇáãÓÊÎÏã</td>") ;
   print("  <td align=right><input dir=\"ltr\" class=enterstyle type=text name=username size=15></td>") ;
   print("  </tr>") ;

   print("  <tr><td align=right class=detailstyle>ÃÏÎá ßáãÉ ÇáãÑæÑ</td>") ;
   print("  <td align=right><input dir=\"ltr\" class=enterstyle type=password name=password size=15></td>") ;
   print("  </tr>") ;
  
   print("<tr><td colspan=2 align=center><input class=enterstyle type=submit value=\"ÏÎæá\"></td></tr>") ;  

   print("  </table>") ;
   print("  </form>") ;
   print("  </td></tr>") ;
   print("  </table>") ;
}

لاحظ عبارة header اين موقعها في الاعلى أي انها محددة كقيمة للدالة يمكننا التحكم بها من ملفات أخرى مرتبطة بهذا الملف بعد عمل هذا التطبيق قم بحفظه باسم وليكن login.php

ملاحظة هامة جدا جدا : إذا انتبهت إلى form action ستجد انه متوجه إلى صفحة الـ index أي الصفحة الرئيسة ومن هناك يأخذ الاوامر علما انه لا يوجد اي شيء هناك له علاقة بالموضوع كما سنرى لاحقا ، هكذا نكون انهينا الجزء الأول ...

ننتقل للجزء الثاني والاهم وهو المكان الذي يدير كافة هذه المعلومات انشئ ملف جديد وليكن اسمه ln.php في اول هذا المل سنطلب البدء في تسجيل الجلسة session عن طريق عبارة أو الامر

()session_start

الان سنطلب من هذا الملف أن يتأكد من وجود الدالة Function المسؤولة عن موضوع تسجيل الدخول كنموذج الذي قمنا بعمله في الأعلى قبل قليل وانا اسميت هذه الدالة initlogin وهذا الامر هو المسؤول عن التنفيذ

if( !function_exists("initlogin") ){
  include("login.php") ;
 }

هنا يسأل البرنامج عن هذه الدالة إن كانت موجودة ويستدعي الملف المسؤول عن تسجيل الدخول الذي أنشئناه قبل قليل وكان اسمه login.php ومن ثما يبدأ في عملية المعالجة ويبدأ بالفحص إذا كانت الجلسة مسجلة فيسمح بالدخول وإذا لا فيطلب اسم المستخدم وكلمة المرور (طريقة التحضير) ...

اولا نقوم بوضع جملة if الشرطية ونحدد قيمها بطلب الجلسة المسجلة عن طريق السطور التالية

if( session_is_registered("loggedinm") && ($action == 'logout') ){
  session_unregister("loggedinm") ;
  session_destroy() ;
 }

هنا يتأكد من ان الجلسة مسجلة وفي حال كانت مسجلة يعطيها القيمة loggedinm أما المتغير action هنا تم وضعه ليكن إمكانية لك حتى تضع لينك في برنامجك لتسجيل الخروج وحتى يترجم محاولة الدخول الخاطئ او عدم الدخول من قبل على اساس انها محاولة تسجيل خروج ، وباقي السطور أيضا هي انه في حال كانت الجلسة غير مسجلة ان يعيد نفس القيمة لأننا سنعتمد عليها في جميع أنحاء عملنا هذا وبعدها ينفذ عملية مسح الجلسة او تدميرها كليا ،

الان عملية تسجيل الدخول : ساضع السطور ثم ساشرحها

if( ! session_is_registered('loggedinm') ){
   if(! $HTTP_POST_VARS ){
     initlogin("تسجيل دخول المدير") ;
   }

الان سيتأكد من ان الجلسة غير مسجلة والذي يحدد كلمة (غير ) علامة التعجب التي تسبق الشرط وفي حال كانت غير مسجلة سيعيد لنا قيمة الـ loggedinm على انها غير مسجلة كما طلبنا في تسلسل الاوامر في الاعلى ومن ثم سيتأكد من عدم تسجيل او دخول اي متغيرات عن طريق المتغير http_post_vars وبعدها سيضع قيمة "تسجيل دخول المدير " للدالة التي قمنا بعملها في البداية والتي هي initlogin وعندما تعود هذه القيمة للملف login.php ستطبع في الاعلى في المكان الذي تحدد له المتغير header كل ما تقدم ذكره كان في حالة عدم تسجيل الدخول بعد الأن داخل الجملة الشرطية الاحقة else نقوم بتحديد متغيرات الدخول وتعليماته وإليك السطور ثم الشرح

else{
    if( isset($HTTP_POST_VARS['username']) && isset($HTTP_POST_VARS['password']) ){
     if( ($username == 'user') && ($password == 'pass') ){
    $loggedinm = $HTTP_POST_VARS['username'] ;
    session_register('loggedinm') ;
   }

هنا بعد البدأ في الشرط else قمنا بتحديد خانت username وهذا الإسم هو نفسه اسم الفراغ المسؤول عن اسم المستخدم في فورم تسجيل الدخول واعدناه للقيمة http_post_vars وطلبنا التحقق أيضا من خانت password التي ينطبق عليها نفس عمليات الـ username ، الان في السطر الثاني نحدد قيم لإسم المستخدم وكلمة المرور وهذا هو الجزء السهل من الموضوع اي ان المسالة بكل بساطة ضع اسم المستخدم بدل كلمة user وكلمة المرور بدل كلمة pass وتنتهي المسالة ، الأن في هذه الخطوة إذا كانت المعطيات صحيحة سيتم تسجيل جلسة حسب اسم المستخدم وسيعيد لنا قيمة الـ loggedinm .

الان في حالة كانت المعطيات غير صحيحة سيكون لدينا سطر واحد ضمن الشرط else لوضع الجملة وهو :

else{
    initlogin("تسجيل دخول خاطئ الرجاء المحاولة من جديد") ;
   }

الأن الخطوة الماقبل الأخيرة وهي البداية تماماً أنظر السطور

else{
   session_unset() ;
   session_destroy() ;
   initlogin("تسجيل دخول المدير") ;

هنا الأمر هو إذا كانت الجلسة غير مسجلة أو ممسوحة او مدمرة يعرض النتيجة صفر وهي "تسجيل دخول المدير"

الان الخطوة ألخيرة فعلا

في هذه العملية وبعد حفظ هذه المجموعة الصغيرة من الأوامر تبدأ عملية زرع سطور في الصفحات المراد حمايتها والسطور بكل بساطة هي كالتالي :

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

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

include("ln.php") ;
if( session_is_registered("loggedinm") ){
 

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

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

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



المزيد من المواضيع

The Text Counter
هل نضع register_globals على هيئة الفتح أو الغلق؟
أوامر أساسية - الجزء الأول
مقدمة قصيرة
بدايتك مع PHP
عمل ملف تثبيت بسيط .. (من صفحة واحدة)
مشروع إنشاء برنامج التعليقات باستخدام PHP – الدرس الخامس
مشروع إنشاء برنامج التعليقات باستخدام PHP – الدرس الرابع
مشروع إنشاء برنامج التعليقات باستخدام PHP – الدرس الثالث
مشروع إنشاء برنامج التعليقات باستخدام PHP – الدرس الثاني
مشروع إنشاء برنامج التعليقات باستخدام PHP – الدرس الأول
إدارة الصور بواسطة تطبيقات قواعد البياناتmysql
استخدام برمجة الكائنات OOP
دراسة وتحليل فى سكريبت اتصل بنا
برمج بنفسك .... عداد زوار (1)

1

 

الاقسام الرئيسية

دروس للمبتدئين

--

دروس في أنظمة التشغيل

--

دروس في الانترنت

--

دروس في لغات البرمجة

--

دروس في برمجة المواقع

--

دروس في الأوفيس

--

دروس في الرسوم و التصميم

--

دروس في قواعد البيانات

--

دروس في الألعاب والبرامج

--

دروس في المكونات الصلبة

--

دروس في الشبكات

--

دروس في أمن المعلومات

--

دروس في الذكاء الاصطناعي

--

القائمة البريدية

  فضائح | ماسنجر | تداول | الحياة الزوجية | عجائب وغرائب| دروس تعليمية | عالم حواء | فضائح الفن | ستار اكاديمي | نكت | برامج | صور | | شات سعودي | شات عربي | ماسينجر | مسجات | دليل مواقع | دليلك | مواقع سعودية | مواقع كويتية | مواقع بحرينية | مواقع قطرية | مواقع عمانية | مواقع يمنية | مواقع عراقية | مواقع اماراتية | دردشة خليجية | دردشة سعودية | دردشة عربية | شات صوتي | دردشة صوتية | دردشة كويتية | دردشة اماراتية | دردشة عمانية | دردشة قطرية | دردشة بحرينية | دردشة عراقية | دردشة يمنية | سكس | طريق الاسلام, انا مسلم , طريق الهدايه , مسلمون , منوعات اسلاميه | اسلاميات , برامج اسلامية , منوعات اسلامية | جنس | الاسرة المسلمة , الاسرة العربية , اسرتي , عائلتي | برامج الاسره , نصائح معلومات , اسرة عربية سعودية خليجية | دروس تعليمية , مكتبة الدروس التعليمية | شروح برامج , شرح برامج , دورات تعليميه | طب وصحه - المركز الطبي | طبيبك على الانترنت , معلومات طبية , معلومات صحيه

Roro44.com xml :                            

شات سعودي | شات عربي | شات خليجي | العاب | دردشات | العاب بنات

 |  اشهر موقعك | احصائيات الموقع | اسعار الاعلانات |  لمراسلة الإدارة  |

:: ©2007-2003 www.roro44.com All rights reserved ::