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

مشاهدة النسخة كاملة : الجلسات ( Session ) نظام تسجيل دخول .


أبو عبدالعزيز
09-18-2006, 05:39 PM
بسم الله الرحمن الرحيم

قد يعمل الشخص سكريبت او في موقعه ، يريد حماية صفحات لا يريد ان يشاهدها كل الاعضاء .. بل تكون لاشخاص محددين ، ولنقل الاعضاء الذين يملكون عضوية بالموقع ..

هناك طريقتان ..

1. الجلسات ( SESSION ) .
2. الكعكات ( ****** ) او الكوكيز .

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

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

الان لاحظ معي .. كيف نبدأ بإنشاء جلسة جديدة لكل زائر ..؟؟

طبعا هذا السؤال سهل جدا الاجابة عليه ( لان نظام الجلسات بسيط جدا ، ستلاحظ ذلك في نهاية الدرس ) ..

الان سنعمل صفحة نضع بها اسم للدخول به & رقم سري للدخول به




<?
// save this code in admin_user.php

$admin_user = "naif";
$admin_pass = "123456";

?>

الان سنعمل صفحة اسمها login.php ونضع بها كود الفورم حق تسجيل الدخول ونعين الفورم الى صفحة اسمها done.php حتى يتم التفصيل بدون تعقيد ويفهم الدرس ،


<?
ECHO " <form method='post' action='done.php'>
User Name : <input type='****' name='User_Name'> <br>
User Pass : <input type='password' name='User_Pass'><br>
<input type='submit' value='دخول'></form>";
?>

حقل لاسم المستخدم اسمه = User_Name
حقل للرقم السري للمستخدم = User_Pass

الان صفحة done.php سنتأكد من ان الاسم والرقم للمستخدم تساوي نفس المعلومات الموجودة في ملف admin_user.php لو تذكر .. هالصفحة ..
وكما لا ننسى سنسجل الجلسة في هذه الصفحة


<?
session_start();

// ندرج ملف admin_user.php

include("admin_user.php");

$user = trim($_POST['User_Name']);
$pass = trim($_POST['User_Pass']);

// شرط تساوي المعلومات

if( ($user == $admin_user) && ($pass == $admin_pass) ){

// نسجل له الجلسة

$_SESSION['ses_name'] = "$user";

// رسالة له ان تم تسجيل الدخول
ECHO " تم تسجيل الدخول بنجاح ";

// نظهر له رابط بالذهاب الى الصفحة المحمية
ECHo "<a href='admin_page.php'> دخول لصفحة الادمن </a> ";

// واذا كانت المعلومات خطا
} else {

ECHO " عفوا تأكد من صحة المعلومات ";

}

?>

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

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



<?
session_start();
?>


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

طبعا اظهرنا له رابط بالصفحة المحية ولنفرض ان اسمها هي admin_page.php ..

انتهينا من الجزء الاول .. نأتي للجزء الثاني ..

الان بعد الدخول نأتي الى صفحة admin_page.php
وسوف نتعلم كيف نتأكد من وجود الجلسة الخاصة بالزئر اي انه سجل دخوله بنجاح ..

واذا لم يسجل نظهر له صفحة الفورم تسجيل الدخول لاحظ معي في هذا الكود لصفحة admin_page.php



<?
session_start();

if( isset($_SESSION['ses_name']) ){

ECHO " محتويات الادمن ";

ECHO " مرحبابك يا ".$_SESSION['ses_name']." شكراً لتسجيل دخولك ";

} else {

// نظهر له رسالة بان الصفحة غير متاح له مشاهدة محتواها يجب عليه التسجيل

ECHO " عفوا يجب عليك تسجيل الدخول لمشاهدة هذه الصفحة ! ";

// او ندرج صفحة تسجيل الدخول
include("login.php");


}

?>


طبعا لازم نبدا بدالة session_start() ..

لاحظ تأكدنا من ان متغير الجسلة تم تسجيله لهذا الزائر عن طريق الدالة isset() .. ويمكننا بواسطة الدالة empty() ايضا .. طبعا لاحظنا كيف نظهر للمدير اسمه عن طريق



<?
echo $_SESSION['ses_name'];
?>

كم هي سهله الجلسات

الان نريد ان نوفر خيار للمدير تسجيل الخروج ، كيف سيتم ذلك

طبعا بكل سهله كما فعلنا في التسجيل .. لاحظ ( نلغي المتغير فقط ) باستخدام الكود التالي


<?
unset( $_SEESION['ses_name'] );
?>

طبعا معروفه الدالة unset() تقوم بالغاء اي متغير .. لكن نريد ايضا تمدير هذه الجسلة نهائيا لهذا الزائر كيف ؟



<?
session_destroy();
?>

وعليه يصبح صفحة تسجيل الخروج مثلا باسم logout.php تحتوي على الكود التالي


<?
session_start();

unset( $_SESSION['ses_name'] );

session_destroy();

echo " تم تسجيل الخروج ";
echo "<br><a href='admin_page.php'>صفحة الادمن</a>";

?>

الان سنضيف في صفحة admin_page.php رابط لصفحة تسجيل الخروج


<?
session_start();

if( isset($_SESSION['ses_name']) ){

ECHO " محتويات الادمن ";

ECHO " مرحبابك يا ".$_SESSION['ses_name']." شكراً لتسجيل دخولك ";


echo "<br>";

echo " لتسجيل خروج <a href='logout.php'> اضغط هنا </a> ";

} else {

// نظهر له رسالة بان الصفحة غير متاح له مشاهدة محتواها يجب عليه التسجيل

ECHO " عفوا يجب عليك تسجيل الدخول لمشاهدة هذه الصفحة ! ";

// او ندرج صفحة تسجيل الدخول
include("login.php");


}

?>

طبعا هذا نظام الجلسات بشكل كامل وسهل جداً ..
ماذا لو اردنا ان يكون هناك عدة مستخدمين .. اي الاستعلام عن المستخدم من قاعدة البيانات ؟؟

كل ماسنحتاج هو في صفحة done.php .. نستعلم عن الاسم من القاعده ان توفر نسجل له جلسة والا لا نسجل له جلسة ..



<?
session_start();

// ندرج ملف admin_user.php

include("admin_user.php");

$user = trim($_POST['User_Name']);
$pass = trim($_POST['User_Pass']);

// شرط تساوي المعلومات

$SQL = mysql_query(" select * from members where name='".$user."' and password='".$pass."' ") or die (mysql_error());

// التحقق من ان المعلومات صحيحة
if( mysql_num_rows($SQL) != "0" ){

// نطلع بيانات العضو
$info = mysql_fetch_array($SQL);

// نسجل له الجلسة

$_SESSION['ses_name'] = "$info[name]";

// رسالة له ان تم تسجيل الدخول
ECHO " تم تسجيل الدخول بنجاح ";

echo "<br>";

echo "<a href='admin_page.php'>صفحة الادمن</a>";

// واذا كانت المعلومات خطا
} else {

ECHO " عفوا تأكد من صحة المعلومات ";

}

?>

هذا بكل بساطة .. في نظام الجلسات وطريقة التعامل معها ...



ملاحظه مهمه جدا ، ابدأ بدالة انشاء الجلسة session_start() قبل دالة طباعه مثل print او كود HTML والا ستواجه مشكلة ان النظام لن يعمل ..

ابوفراس
09-19-2006, 06:30 PM
مشكور اخوي

تسلم يمينك

أبو عبدالعزيز
09-20-2006, 05:08 PM
الله يسلمك اخوي ابو فراس

دمع العين
10-04-2006, 10:40 AM
مشكور احلامي الورديه والله يعطيك الف عافيه

دمع العين
10-04-2006, 10:44 AM
مشكور احلامي الورديه والله يعطيك الف عافيه

أبو عبدالعزيز
10-06-2006, 12:26 AM
الله يعافيك دمع العين

ومشكور على مرورك

احلامي
10-07-2006, 11:13 PM
يسلموا احلامي الوردية


ولا عدمناك ,,

أبو عبدالعزيز
10-08-2006, 07:25 PM
لا شكر على واجب

اختى احلامي

ولا شكر على واجب

نوجي
02-14-2008, 07:39 PM
احلامى الوردية

الف شكر على الطرح الرائع

لك منى ارق المنى

*****

هيام1
02-28-2008, 07:10 PM
http://abeermahmoud07.jeeran.com/639-Thanks-AbeerMahmoud.gif

احمد احمد
03-27-2008, 12:16 AM
مشكور

أخي الكريم

أحلامي الوردية

ما تقدمه رائع

superguy2003
09-10-2008, 08:56 PM
احلامي الوردية

يعطيك الف عافية على طرحك

شاكر لك جهودك

سلمت وتحياتي لك