المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : شرح تسجيل المدير الدخول الى لوحة الادارة باستخدام الكوكيز وقاعدة البيانات


taha2
06-03-2009, 08:15 PM
بناءا على طلب احد الاخوة معنا في المعهد فقد قمت بعمل هذا الدرس للتوضيح
وربنا يقدرني واعرف اوصل المعلومه

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

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

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

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

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


CREATE TABLE `admin` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`pass` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;


اظن واضح جدا ومش فيه اي شيء غير مفهوم

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


INSERT INTO `admin` VALUES (1, 'admin', '123456');


و بالتالي اصبح يوجد مدير واحد فقط في القاعدة
اسمه admin
كلمة المرور 123456 وغير مشفره
للتوضيح (( نقدر نضيف التشفير باكثر من طريقه لكن هذا المثال مبسط ))

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

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

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

<html>

<head>
<meta [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]"Content-Language" content="ar-sa">
<meta [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]"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>


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


login.php?do=login



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

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

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

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



switch($_GET['do'])
{


بداية الاحتمالات


case"login":



if(!isset($_******[moustafathetravellername]) && !isset($_******[moustafathetravellerpass]))
{



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

include_once ('./adminlogin.php');



</strong>هذا مثال بسيط على ملف جلوبال مكتوب فيه استعلام عن المدير من الداتا بيز


$name = trim($_POST[username]);
$pass = trim($_POST[password]);





البيانات القادمة من فورم تسجيل الدخول
وهذا الاستعلام الموجود في ملف الجلوبال اللي اسمه adminlogin.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];
}
}
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]




ونتيجه هذا الاستعلام هو اسم المدير وكلمة المرور من قاعدة البيانات

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


if($name != $admin[name] AND $pass != $admin[pass] )
{
// في حالة البيانات الخطأ
echo " يوجد خطأ في اسم المستخدم او كلمة المرور";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='2; url=login.html'>";




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


else{
set******("moustafathetravellername",$admin[name],time()+3600*3);
set******("moustafathetravellerpass",$admin[pass],time()+3600*3);
echo "مرحبا بك يا غالي في لوحة تحكمك<br>لحظات ويتم تحويلك";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='2; url=index.php'>";
}



اما لو صحيحه ازرع الكوكيز في جهاز العضو واظهر رسالة ترحيب وبعدين اذهب بالمتصفح للصفحه الرئيسية للاسكربت

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

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


else{
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='1; url=index.php'>";
}


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


break;


الان نأتي الى حالة تسجيل الخروج

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


if(!isset($_******[moustafathetravellername]) && !isset($_******[moustafathetravellerpass]))
{
echo "من فضلك قم بتسجيل الدخول اولا";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='2; url=login.html'>";

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


}else{
set******("moustafathetravellername",$admin[name],time()-3600*3);
set******("moustafathetravellerpass",$admin[pass],time()-3600*3);
echo "تم تسجيل الخروج بنجاح<br>لحظات ويتم تحويلك";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='2; url=login.html'>";
}

break;
}



رقم المشاركة : [1 ([فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات])]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات] 01 - 03 - 2009, 22:44
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات] ([فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]) the_traveller ([فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]) [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
:: عضو نشيط ::
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
بيانات موقعي اسم الموقع: مؤسسة فجر السعودية ([فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات])
اصدار المنتدى: لا أملك منتدى





[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]


[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات] شرح تسجيل المدير الدخول الى لوحة الادارة باستخدام الكوكيز وقاعدة البيانات
السلام عليكم ورحمة الله و بركاته

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

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

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

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

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

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

رمز PHP:
CREATE TABLE `admin` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`pass` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;


اظن واضح جدا ومش فيه اي شيء غير مفهوم

طيب دلوقتي عاوزن نضيف المدير
نحط الكود التالي في استعلام sql
رمز PHP:
INSERT INTO `admin` VALUES (1, 'admin', '123456');


و بالتالي اصبح يوجد مدير واحد فقط في القاعدة
اسمه admin
كلمة المرور 123456 وغير مشفره
للتوضيح (( نقدر نضيف التشفير باكثر من طريقه لكن هذا المثال مبسط ))

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

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

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

رمز PHP:
<html>

<head>
<meta [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]"Content-Language" content="ar-sa">
<meta [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]"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($_******[moustafathetravellername]) && !isset($_******[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];
}
}
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]


ونتيجه هذا الاستعلام هو اسم المدير وكلمة المرور من قاعدة البيانات

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

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


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


اما لو صحيحه ازرع الكوكيز في جهاز العضو واظهر رسالة ترحيب وبعدين اذهب بالمتصفح للصفحه الرئيسية للاسكربت

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

يبقى نكمل الكود كالتالي
رمز PHP:
else{
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='1; url=index.php'>";
}


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


الان نأتي الى حالة تسجيل الخروج

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

رمز PHP:
if(!isset($_******[moustafathetravellername]) && !isset($_******[moustafathetravellerpass]))
{
echo "من فضلك قم بتسجيل الدخول اولا";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='2; url=login.html'>";


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

break;
}


يبقى نحذفها ونذهب بالمتصفح الى صفحه تسجيل الدخول

وبكده نكون انتهينا من اهم ملف وهو تسجيل الدخول والخروج
الان نأتي لملف index الرئيسي للوحه
ذكرنا في البداية ان الملف هذا لابد ان يكون في بدايتة شرط ان تحقق يعرض محتويات اللوحه
واذا لم يتحقق لا يعرض
الشرط هذا هو الكوكيز
بمعنى اذا كانت الكوكيز موجوده في الجهاز (( الكوكيز الخاصة بالاسكربت )) يبقى يعرض محتويات اللوحه
غير ذلك يبقى يعرض صفحه تسجيل الدخول مرة اخرى
طيب نترجم الكلام كالتالي
if(!isset($_******[moustafathetravellername]) && !isset($_******[moustafathetravellerpass]))
{
echo " غير مصرح لك بدخول هذه الصفحه بدون تسجيل دخول";
echo " <META [فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]'Refresh' CONTENT='1; url=login.html'>";



</strong>في حالة عدم وجود الكوكيز رسالة الخطأ + الذهاب الى صفحه تسجيل الدخول
غير ذلك
يعرض ملفات الاسكربت

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

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

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

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

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

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