الجلسات و ملفات تعريف الإرتباط في php . ج 2الكوكيز
سنستكمل في هدا الدرس شرح الجلسات و ملفات تعريف الإرتباط المعروفة بالكوكيز.
و سنقوم بالدمج بين التقنيتين بطريقة تعطي تجربة تصفح أفضل للمستخدم .
سنستكمل في هدا الدرس شرح الجلسات و ملفات تعريف الإرتباط المعروفة بالكوكيز.
أول ما سنقوم به هو تصميم نمودج تسجيل الدخول عن طريق html
يمكنك الإستعانة ببرنامج nvu لتصميمه
شرح برنامج nvu لتصميم صفحات بسيطة للمواقع
سيتألف النمودج من العناصر التالية
2
لاحض أنني قمت بتضمين رمز --usrname-- في رسالة تسجيل الدخول
سنقوم بإستبدال هدا الرمز - برمجيا - بإسم المستخدم في ما بعد
-
قم بإنشاء ملف بإسم config.php
داخل هدا الملف سنقوم بتخزين جميع الإعدادات و البيانات الخاصة بنمودج تسجيل الدخول
ولكن قبل دلك لابد من فتح وسوم php للبدأ في البرمجة
داخل php أنشئ مصفوفة بها بيانات المستخدم
إسم المستخدم :aziz
كلمة المرور : 123456789
أنشئ متغير لمدة صلاحية الكوكيز
القيمة التي قمنا بتخزينها في المتغير $cookie_expiry هي الوقت الحالي time() + ساعة واحدة
أي أن الكوكيز سيكون صالح ساعة واحدة بعد إجراء تسجيل الدخول
يمكن التحكم بهده الفترة عن طريق تغيير عدد التواني 3600 إلى أي عدد تريده
أمثلة
1 يوم = 86400
7 يوم =604800
30 يوم = 18144000
أنشئ مصفوفة لمحتويات html من أجل تخزين تصاميم html اللتي عملنا عليها سابقا
a نمودج تسجيل الدخول
b رسالة الترحيب بالمستخدم بعد تسجيل الدخول
c رسالة ( إسم المستخدم أو كلة المرور خطأ )
بهدا نكون قد إنتهينا من تعبئة ملف الإعدادات config
أنشي ملف آخر بإسم login.php
سيتظمن هدا الملف جميع الوضائف البرمجية اللتي سنحتاجها لإجراء تسجيل الدخول بإستخدام الجلسات و ملفات تعريف الإرتباط / الكوكيز
أول وضيفة / دالة سنستخدمها هي session_start و اللتي تعرفنا عليها في الجزئ السابق من هدا الدرس
تم نقوم بإستدعاء ملف config.php عن طريق دالة include
وظيفة الكوكيز - في حال وجوده - ستقتصر على إعادة إحياء الجلسة
لدا سنستخدم الدالة الشرطية if و دالة التحقق من وجود العنصر isset من أجل تحويل قيمة الكوكيز - في حال توفره - إلى الجلسة
داخل هدا الشرط قمنا أيضا بتخزين الرقم 1 في المتغير $_SESSION['session_stat']
ودلك للتأكيد على أن الجلسة نشطة دون الحاجة لمزيد من الشروط الإضافية
بعدها سنتحقق من وجود أي مدخلات قادمة من نمودج تسجيل الدخول عن طريق مصفوفة $_POST
حقل إسم المستخدم يحمل اللإسم usrname لدا فقيمة المدخل ستكون في المصفوفة بهدا الشكل $_POST['usrname']
الشرط للتحقق من وجود مدخلات :
ما سيتم تنفيده داخل الشرط هو التحقق مجددا أن المدخلات صحيحة و ليست خطأ و دلك بمقارنتها بالبيانات اللتي قمنا بتعبئتها في ملف config
كما سنقوم بتعيين حالة الجلسة إلى نشطة عن طريق وضع الرقم 1 في متغير الجلسة $_SESSION['session_stat']
بعد كل هدا نأتي للنقطة الأخيرة و هي التحقق : هل الجلسة نشطة أو لا . و دلك بإستخدام المتغير السابق $_SESSION['session_stat']
و تبعا لدلك سنقوم بعرض رسالة تسجيل الدخول الناجح مع إظهار إسم المستخدم بدلا من الرمز --usrname--
أو
عرض نمودج تسجيل الدخول
يمكنك إضافة رابط مع رسالة تسجيل الدخول بنجاح لإجراء تسجيل الخروج
هدا الرابط سيكون لصفحة أخرى تضع فيها برمجة تسجيل الخروج ( حذف الكوكيز و الجلسة )
لكن إرتئيت عدم إدراج هدا في الدرس حتى نركز على الأهم ( تسجيل الدخول و ليس تسجيل الخروج )
رابط تحميل الصفحات البرمجية كاملة
http://www.mediafire.com/file/ihmm4a6e9cezxa2/session_cookie_php.rar/file
إنتهى الدرس
aa-- --bb
jjjjjjjjjjjjj
و سنقوم بالدمج بين التقنيتين بطريقة تعطي تجربة تصفح أفضل للمستخدم .
بداية و إن كنت لم تتابع الدرس السابق فيمكنك الرجوع إليه من خلال الرابط التالي :
أول ما سنقوم به هو تصميم نمودج تسجيل الدخول عن طريق html
يمكنك الإستعانة ببرنامج nvu لتصميمه
شرح برنامج nvu لتصميم صفحات بسيطة للمواقع
سيتألف النمودج من العناصر التالية
- حقل إدخال إسم المستخدم usrname
- حقل إدخال كلمة المرور password
- مربع إختيار حفظ تسجيل الدخول ( إستخدام الكوكيز ) cooki
- زر الإرسال
<div>
<form
style="border: 3px solid rgb(170, 221, 170); margin: auto; padding: 20px 0px; width: 300px; text-align: center;"
method="post" action="login.php" name="login"><input
name="usrname"><br>
<input name="password" type="password"><br>
<input name="cooki" value="yes" type="checkbox"><br>
<input name="send" value="login" type="submit">
</form>
</div>
إلى جانب تصميم نمودج تسجيل الدخول هدا . نحتاج لتصميم رسالتين إضافيتين
- رسالة الترحيب بالزائر ( بعد تسجيل الدخول )
- رسالة تخبر الزائر بعدم نجاح تسجيل الدخول ( إدا كان إسم المستخدم أو كلمة المرور خطأ )
1
<div style="margin:auto;border: 3px solid #ada;width:300px;
border-radius: 10px;text-align: center;padding: 20px 0px;">
تم تسجيل الدخول بنجاح<br>
--usrname--
</div>
2
<div style="margin:auto;border: 3px solid #ada;width:300px;border-radius: 10px;
text-align: center;padding: 20px 0px;color:red;">
خطأ : إسم المستخدم أو كلمة المرور غير صحيحة
</div>
لاحض أنني قمت بتضمين رمز --usrname-- في رسالة تسجيل الدخول
سنقوم بإستبدال هدا الرمز - برمجيا - بإسم المستخدم في ما بعد
-
قم بإنشاء ملف بإسم config.php
داخل هدا الملف سنقوم بتخزين جميع الإعدادات و البيانات الخاصة بنمودج تسجيل الدخول
ولكن قبل دلك لابد من فتح وسوم php للبدأ في البرمجة
<?php
?>
داخل php أنشئ مصفوفة بها بيانات المستخدم
$usr_i= array(
'name'=>'aziz',
'pass'=>'123456789'
);
إسم المستخدم :aziz
كلمة المرور : 123456789
أنشئ متغير لمدة صلاحية الكوكيز
$cookie_expiry = time() + 3600;
القيمة التي قمنا بتخزينها في المتغير $cookie_expiry هي الوقت الحالي time() + ساعة واحدة
أي أن الكوكيز سيكون صالح ساعة واحدة بعد إجراء تسجيل الدخول
يمكن التحكم بهده الفترة عن طريق تغيير عدد التواني 3600 إلى أي عدد تريده
أمثلة
1 يوم = 86400
7 يوم =604800
30 يوم = 18144000
أنشئ مصفوفة لمحتويات html من أجل تخزين تصاميم html اللتي عملنا عليها سابقا
$html=array(
'login_form' => '',
'usr_area' => '',
'msg_erre' => ''
);
a نمودج تسجيل الدخول
b رسالة الترحيب بالمستخدم بعد تسجيل الدخول
c رسالة ( إسم المستخدم أو كلة المرور خطأ )
بهدا نكون قد إنتهينا من تعبئة ملف الإعدادات config
أنشي ملف آخر بإسم login.php
سيتظمن هدا الملف جميع الوضائف البرمجية اللتي سنحتاجها لإجراء تسجيل الدخول بإستخدام الجلسات و ملفات تعريف الإرتباط / الكوكيز
أول وضيفة / دالة سنستخدمها هي session_start و اللتي تعرفنا عليها في الجزئ السابق من هدا الدرس
تم نقوم بإستدعاء ملف config.php عن طريق دالة include
session_start();
include 'config.php';
وظيفة الكوكيز - في حال وجوده - ستقتصر على إعادة إحياء الجلسة
لدا سنستخدم الدالة الشرطية if و دالة التحقق من وجود العنصر isset من أجل تحويل قيمة الكوكيز - في حال توفره - إلى الجلسة
if(isset($_COOKIE['usrname'])){
$_SESSION['usrname'] = $_COOKIE['usrname'];
$_SESSION['session_stat'] ='1';
}
داخل هدا الشرط قمنا أيضا بتخزين الرقم 1 في المتغير $_SESSION['session_stat']
ودلك للتأكيد على أن الجلسة نشطة دون الحاجة لمزيد من الشروط الإضافية
بعدها سنتحقق من وجود أي مدخلات قادمة من نمودج تسجيل الدخول عن طريق مصفوفة $_POST
حقل إسم المستخدم يحمل اللإسم usrname لدا فقيمة المدخل ستكون في المصفوفة بهدا الشكل $_POST['usrname']
الشرط للتحقق من وجود مدخلات :
if(isset($_POST['usrname'])){
// سنضع هنا النص البرمجى اللدي سيتم تنفيده حال تحقق الشرط
}
ما سيتم تنفيده داخل الشرط هو التحقق مجددا أن المدخلات صحيحة و ليست خطأ و دلك بمقارنتها بالبيانات اللتي قمنا بتعبئتها في ملف config
if($_POST['usrname'] == $usr_i['name'] && $_POST['password'] == $usr_i['pass']){إدا توافقت البيانات المدخل في نمودج تسجيل الدخول مع بيانات ملف config سنقوم بتخزين قيمة إسم المستخدم المدخلة في متغير الجلسة $_SESSION['usrname']
// النص البرمجي في حال تطابق البيانات المدخلة مع بيانات ملف config
}else{
// إظهار رسالة الخطأ
}
كما سنقوم بتعيين حالة الجلسة إلى نشطة عن طريق وضع الرقم 1 في متغير الجلسة $_SESSION['session_stat']
$_SESSION['usrname']=$_POST['usrname'];كما سنقوم أيضا من التحقق من وجود علامة صح على مربع الإختيار لحفظ الجلسة ( إستخدام الكوكيز )
$_SESSION['session_stat'] ='1';
if(isset($_POST['cooki']) && $_POST['cooki']=='yes'){طبعا في هده الحالة سيتم حفظ إسم المستخدم اللدي تم إدخاله في الكوكيز و سنستخدم المتغير $cookie_expiry اللدي وضعناه في ملف config لتحديد مدة صلاحية الكوكيز
// النص البرمجي في حال قام المستخدم بوضع علامة على مربع الإختيار }
if(isset($_POST['cooki']) && $_POST['cooki']=='yes'){في حال كانت المدخلات في النمودج غير صحيحة سيتم إيقاف تنفيد الصفحة عن طريق دالة die و إظهار رسالة الخطأ التي وضعناها في ملف config
setcookie('usrname',$_POST['usrname'],$cookie_expiry); }
die($html['msg_erre']);كود التحقق من تسجيل الدخول كاملا :
if(isset($_POST['usrname'])){
if($_POST['usrname'] == $usr_i['name'] && $_POST['password'] == $usr_i['pass']){
$_SESSION['usrname']=$_POST['usrname'];
$_SESSION['session_stat'] ='1';
if(isset($_POST['cooki']) && $_POST['cooki']=='yes'){
setcookie('usrname',$_POST['usrname'],$cookie_expiry); }
}else{
die($html['msg_erre']);
}
}
بعد كل هدا نأتي للنقطة الأخيرة و هي التحقق : هل الجلسة نشطة أو لا . و دلك بإستخدام المتغير السابق $_SESSION['session_stat']
و تبعا لدلك سنقوم بعرض رسالة تسجيل الدخول الناجح مع إظهار إسم المستخدم بدلا من الرمز --usrname--
أو
عرض نمودج تسجيل الدخول
if(isset($_SESSION['session_stat']) && $_SESSION['session_stat']=='1'){الكود التحقق من الجلسة كاملا مع التعليقات //
// عرض رسالة تسجيل الدخول بنجاح مع إستبدال --usrname-- بإسم المستخدم
}else{
//عرض نمودج تسجيل الدخول
}
// التحقق من وجود الجلسة
if(isset($_SESSION['session_stat']) && $_SESSION['session_stat']=='1'){
// إستبدال --usrname-- بإسم المستخدم في رسالة تسجيل الدخول الناجح
echo str_replace('--usrname--',$_SESSION['usrname'] , $html['usr_area'] );
}else{
// في حال العكس سيتم عرض نمودج تسجيل الدخول
echo $html['login_form'];
}
يمكنك إضافة رابط مع رسالة تسجيل الدخول بنجاح لإجراء تسجيل الخروج
هدا الرابط سيكون لصفحة أخرى تضع فيها برمجة تسجيل الخروج ( حذف الكوكيز و الجلسة )
لكن إرتئيت عدم إدراج هدا في الدرس حتى نركز على الأهم ( تسجيل الدخول و ليس تسجيل الخروج )
رابط تحميل الصفحات البرمجية كاملة
http://www.mediafire.com/file/ihmm4a6e9cezxa2/session_cookie_php.rar/file
إنتهى الدرس