شكراً اخي عبد العزيز الله ينور عليك الفكرة وصلت ..
انا اللي عملته بالضبط .. الخيارات في لوحة التحكم كالتالي (القائمة الرئيسية - قائمة الأقسام - قائمة المواضيع - قائمة الأعضاء) .. عملت 4 حقول في جدول users كالتالي : allow_main , allow_cats , allow_topics , allow_users) .. و اعطيتهم القيم 0 , 1 بحيث 0 = غير مسموح.
و الصفحة الرئيسية للوحة التحكم عملت استعلام و وضعت نتائج الحقول الاربعة في مصفوفة و عملت مقارنة عن طريق دالة if
كود:
if ($allow_main == 1) {
echo "القائمة الرئيسية";
}
طبعاً بعد تسجيل الدخول ..
و اذا حاول العضو بعد تسجيل الدخول و عدم وجود صلاحيات في الصفحة الرئيسية للوحة التحكم في الدخول مباشرة الى مثلاً الخيارات العامة التابعة للقائمة الرئيسية عن طريق كتابة العنوان .. لن يسمح له بالدخول لوجود الجملة الشرطية if السابقة في بداية ملف الخيارات و هكذا ..
بالاضافة لوجود صفحة في لوحة التحكم من خلالها يتم تحدد الصلاحيات للأعضاء عن طريق خيار checkbox ..
موضوع مفيد
http://www.montadaphp.net/t1632
----------------------------------------------
اما بالنسبة لتطبيق الـ session فأنا بحثت عن مواضيع كتير و للاسف كل موضوع بطريقة تطبيق مختلفة عن المواضيع الاخرى و احيانا ما بيضبط التطبيق للاسف لكن افضل موجود وجدته هو التالي PHP Login script tutorial ..
مقدمة عن الsession من هنا PHPvillage
التطبيق و ياريت لو في أي خطأ من الأخوة المحترفين ينبهوني لان انا اجتهدت لأتوصل لأفضل طريقة حسب ما قرأت في سوالف و منتدى php و موقع phpeasystep و عدلت عليها بشكل بسيط جداً لتلبي احتياجاتي ..
الفكرة العامة :
يجب وضع في بداية كل ملفات الموقع مباشر بعد ..
يجب وضع جملة شرطية في الملفات التي يجب حمايتها او ان يدخلها الاعضاء فقط و تكون الجملة الشرطية اذا كان هناك جلسة يطبع الاكواد اما اذا لم يكن هناك جلسة يستدعي ملف login.php ..
بإختصار ..
ملف لتسجيل الأعضاء register.php
ملف لتسجيل الدخول login.php
ملف للتحقق من تسجيل الدخول ckeck.php
ملف لتسجيل الخروج logout.php
بالنسبة للملف Login.php ملف عادي به فورم لتسجيل دخول الاعضاء و الـ action = ckeck.php ..
كود:
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="check.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="username" type="text" id="username"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="password" type="text" id="password"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
الملف cleck.php للتحقق من البيانات المدخلة في الملف login.php
كود:
<?php
session_start(); //يجب وضعها في بداية الملفات حتى من غير مسافات
include ("include/config.php"); //استدعاء ملف معلومات قاعدة البيانات
//اسناد القيم إلى متغيرات
$username = $_POST['username'];
$password = $_POST['password'];
//الاستعلام اذا كان اسم المستخدم و كلمة السر تساوي القيم المدخلة
$sql = mysql_query("SELECT * FROM `users` WHERE `user_username` = '$username' and `user_password` = '$password'");
//وضع نتائج الإستعلام في مصفوفة
$rows = mysql_fetch_array($sql);
$userid = $rows['user_id']; //رقم اسم المستخدم
$myusername = $rows['user_username']; //اسم المستخدم
//ما فهمته ان يختار سطر واحد من قاعدة البيانات و ياريت لو في توضيح من الأخوة
$count = mysql_num_rows($sql);
// اذا كانت النتيجة 1
if ($count == 1){
// بناء الجلسة باسم المستخدم و كلمة السر
session_register("username");
session_register("password");
//متغيرات الجلسة
$_SESSION['userid'] = $userid; //رقم اسم المستخدم المستخرج من قاعدة البيانات اسندناه الى متغير جلسة
$_SESSION['username'] = $myusername; //اسم المستخدم المستخرج من قاعدة البيانات اسندناه الى متغير جلسة اخر
echo "تم تسجيل دخولك بنجاح يا [$myusername]";
} else {
echo "خطأ , اسم المستخدم أو كلمة المرور !";
}
?>
بالنسبة لحماية ملف معين لا يدخله الا الاعضاء مثلاً usercp.php لوحة تحكم العضو
نضع الجملة الشرطية في بداية الملف .. و معناها اذا لم تكون هناك جلسة باسم المستخدم
كود:
if (!session_is_registered(username)){
include ("login.php");
} else {
//الاكواد الخاصة بمنطقة الأعضاء
}
ولا تنسى session_start (); في بداية الملف مباشرة ..
ما اعانيه بالـطريقة السابقة :
1. عدم وجود كاش , بمعنى لو في صفحة التسجيل register.php حصل خطأ في البيانات و عند الرجوع الى الخلف تختفي كل البيانات !
2. تبدأ الجلسة و تنتهي في حالة اغلاق المتصفح لكن لو هناك جلسة قائمة و فتحت صفحة اكسبلور جديدة كأنه لا يوجد جلسة ..
بمعنى انا عملت تسجيل دخول و اتصفح الموقع من نفس نافذة المتصفح و فجأة فتحت صفحة جديدة فكأنما لا يوجد جلسة !!
لو في يا اخ عبد العزيز أي استفسار انا بالخدمة الواحد بيستفيد و يفيد و لو اني لسه في بداية الطريق (مبتدىء) ..
بالتوفيق ان شاء الله ..