السلام عليكم ورحمة الله و بركاته

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

فكره اليوم هيا كيفيه دخول المدير الى لوحة التحكم

طبيعي ان لوحة تحكم الاسكربت لابد تكون محصنه ومؤمنه بحيث مش كل حد يقدر يدخل ليها
ودرسنا اليوم بالاعتماد على قواعد البيانات

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

وطبعا في هذا المثال قمت بعمل فكره مبسيطه جدا
يعني الموقع مالوش غير مدير واحد بس

طيب يالا نشوف بنيه الجدول


كود PHP:
                      CREATE TABLE `admin` ( 
  `
idint(11NOT NULL auto_increment
  `
namevarchar(50NOT NULL
  `
passvarchar(255NOT NULL
  
PRIMARY KEY  (`id`) 
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 
اظن واضح جدا ومش فيه اي شيء غير مفهوم

طيب دلوقتي عاوزن نضيف المدير
نحط الكود التالي في استعلام sql

كود PHP:
                      INSERT INTO `adminVALUES (1'admin''123456'); 
و بالتالي اصبح يوجد مدير واحد فقط في القاعدة
اسمه admin
كلمة المرور 123456 وغير مشفره
للتوضيح (( نقدر نضيف التشفير باكثر من طريقه لكن هذا المثال مبسط ))

كده خلصنا من قاعده البيانات
نروح دلوقتي على الجزء المهم وهو مجلد الادمن

طبيعي ان لما ندخل اي مجلد لو فيه ملف index يبقى محتويات الاندكس اللي بتتعرض
طيب المفروض ان مجلد الادمن محمي
يبقى لابد نحط فيه ملف Index.php ونحط في الملف ده معلومات الحماية او شرط التأكد ان اللي يدخل المجلد شخص معاه التصريح او المدير طيب ازاي؟؟
هانشوف دلوقتي

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

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

كالتالي مثلا


كود PHP:
                      <html

<
head
<
meta http-equiv="Content-Language" content="ar-sa"
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1256"
<
title>تسجيل الدخول</title
</
head

<
body

<
div align="center"
    <
table border="0" width="44%" dir="rtl" cellspacing="0" cellpadding="0"
        <
tr
            <
td align="center">تسجيل الدخول</td
        </
tr
        <
tr
            <
td align="center">    <form id="registerForm" action="login.php?do=login" method="post" 
            <
div align="center"
            <
div>إسم المشتخدم</div
            <
input type='text' name='username' id='username' size='15' /> 
            <
div>كلمة المرور</div
            <
input type='password' name='password' id='password' size='15' /> 
            <
div></div
            <
input type='submit' value='دخول' /> 
            </
form
            </
div
                </
div
            </
td
        </
tr
        </
table
        </
form></td
        </
tr
    </
table
</
div

</
body

</
html
فورم بسيط جدا ومش محتاج شرح
الا انه للتعقيب واخد اكشن كالتالي

كود PHP:
                      login.php?do=login 
يعني معنى كده ان بيانات الفورم هذا هاتروح على صفحه اسمها login.php واكشن فيها اسمه login

يبقى المفروض دلوقتي نعمل الصفحه

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

طيب هيا بنا نترجم الكلام هذا


كود PHP:
                          switch($_GET['do']) 
    { 
بداية الاحتمالات

كود PHP:
                          case"login"
حالة تسجيل الدخول

كود PHP:
                          if(!isset($_COOKIE[moustafathetravellername]) && !isset($_COOKIE[moustafathetravellerpass])) 

في حالة عدم تسجيل العضو دخول من قبل (( عن طريق الكوكيز ))

كود PHP:
                          include_once ('./adminlogin.php'); 
هذا مثال بسيط على ملف جلوبال مكتوب فيه استعلام عن المدير من الداتا بيز

كود PHP:
                          $name trim($_POST[username]); 
    
$pass trim($_POST[password]); 
البيانات القادمة من فورم تسجيل الدخول
وهذا الاستعلام الموجود في ملف الجلوبال اللي اسمه adminlogin.php

كود PHP:
                      include ('./config.php');// الاتصال بالداتا بيس 


    // البحث عن المشتخدم في قاعدة البيانات 
    
$query mysql_query(" SELECT * FROM `admin` WHERE `admin`.`id` = '1' LIMIT 0 , 1"); 
    
$issetadmin mysql_affected_rows(); 
    if(
$issetadmin != 0
    { 
        while(
$row mysql_fetch_array($query)) 
        { 
            
$admin[name] = $row[name]; 
            
$admin[pass] = $row[pass]; 
        } 
    } 
    @
mysql_free_result($query); 
ونتيجه هذا الاستعلام هو اسم المدير وكلمة المرور من قاعدة البيانات

نرجع لملف login ونكمل الحالة
هنا نعمل مقارنه بسيطه بين البيانات القادمة من الفورم والبيانات اللي جاية من ملف adminlogin


كود PHP:
                          if($name != $admin[name] AND $pass != $admin[pass]  ) 
    { 
        
// في حالة البيانات الخطأ 
        
echo " يوجد خطأ في اسم المستخدم او كلمة المرور"
        echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=login.html'>"
في حالة ما اذا كانت البيانات غير متطابقة اظهر رسسالة خطا واذهب بالمتصفح لصفحه تسجيل الدخول مرة اخرى

كود PHP:
                      else{ 
            
setcookie("moustafathetravellername",$admin[name],time()+3600*3); 
             
setcookie("moustafathetravellerpass",$admin[pass],time()+3600*3); 
             echo 
"مرحبا بك يا غالي في لوحة تحكمك<br>لحظات ويتم تحويلك"
             echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=index.php'>"
    } 
اما لو صحيحه ازرع الكوكيز في جهاز العضو واظهر رسالة ترحيب وبعدين اذهب بالمتصفح للصفحه الرئيسية للاسكربت

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

يبقى نكمل الكود كالتالي

كود PHP:
                          else{ 
            echo 
" <META HTTP-EQUIV='Refresh' CONTENT='1; url=index.php'>"
    } 
يعني يذهب بالمتصفح الى الصفحه الرئيسية للاسكربت
ونقفل حالة تسجيل الدخول

كود PHP:
                          break; 
الان نأتي الى حالة تسجيل الخروج

وهي مطلوب فيها التأكد فقط من وجود الكوكيز في جهاز المستخدم
ولو نترجم الكلام كالتالي


كود PHP:
                          if(!isset($_COOKIE[moustafathetravellername]) && !isset($_COOKIE[moustafathetravellerpass])) 

    echo 
"من فضلك قم بتسجيل الدخول اولا"
        echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=login.html'>"
في حالة عدم وجود الكوكيز اظهر رسالة خطأ وإذهب بالمتصفح الى صفحه تسجيل الدخول
اما اذا كانت موجوده

كود PHP:
                          }else{ 
            
setcookie("moustafathetravellername",$admin[name],time()-3600*3); 
             
setcookie("moustafathetravellerpass",$admin[pass],time()-3600*3); 
             echo 
"تم تسجيل الخروج بنجاح<br>لحظات ويتم تحويلك"
             echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=login.html'>"
    } 
     
    break; 
    } 
يبقى نحذفها ونذهب بالمتصفح الى صفحه تسجيل الدخول

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

كود PHP:
                          if(!isset($_COOKIE[moustafathetravellername]) && !isset($_COOKIE[moustafathetravellerpass])) 
{         
    echo 
" غير مصرح لك بدخول هذه الصفحه بدون تسجيل دخول"
        echo 
" <META HTTP-EQUIV='Refresh' CONTENT='1; url=login.html'>"
في حالة عدم وجود الكوكيز رسالة الخطأ + الذهاب الى صفحه تسجيل الدخول
غير ذلك
يعرض ملفات الاسكربت

وطبعا لابد من تزويد كل ملفات لوحة التحكم بهذا الشرط كحماية لها
لان بدون هذا الشرط تظل الملفات مفتوحه لاي شخص

وبكده اكون انتهيت من الشرح

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

مرفق مع الموضوع مثال على الشرح
التعديل في ملف config.php ثم زراعه ملف admin.sql في قاعدة بيانات
والذهاب الى مجلد admin بالمتصفح

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

اذا كان في اي جزء غير واضح لا تتردد بالسؤال