aa-- --bb
[0]
[1]
[2] line , [3] octet
x
الصفحة الرئيسية
css
php
javascript
html
الجلسات و ملفات تعريف الإرتباط في php . ج 2الكوكيز
سنستكمل في هدا الدرس شرح الجلسات و ملفات تعريف الإرتباط المعروفة بالكوكيز. و سنقوم بالدمج بين التقنيتين بطريقة تعطي تجربة تصفح أفضل للمستخدم .
سنستكمل في هدا الدرس شرح الجلسات و ملفات تعريف الإرتباط المعروفة بالكوكيز.
و سنقوم بالدمج بين التقنيتين بطريقة تعطي تجربة تصفح أفضل للمستخدم .

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



أول ما سنقوم به هو تصميم نمودج تسجيل الدخول عن طريق html
يمكنك الإستعانة ببرنامج nvu لتصميمه


شرح برنامج nvu لتصميم صفحات بسيطة للمواقع



سيتألف النمودج من العناصر التالية


  1. حقل إدخال إسم المستخدم usrname
  2. حقل إدخال كلمة المرور password
  3. مربع إختيار حفظ تسجيل الدخول ( إستخدام الكوكيز ) cooki
  4. زر الإرسال
<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. رسالة الترحيب بالزائر ( بعد تسجيل الدخول ) 
  2. رسالة تخبر الزائر بعدم نجاح تسجيل الدخول ( إدا كان إسم المستخدم أو كلمة المرور خطأ )

<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
}else{
// إظهار رسالة الخطأ
}
إدا توافقت البيانات المدخل في نمودج تسجيل الدخول مع بيانات ملف config سنقوم بتخزين قيمة إسم المستخدم المدخلة في متغير الجلسة $_SESSION['usrname']
كما سنقوم بتعيين حالة الجلسة إلى نشطة عن طريق وضع الرقم 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'){
setcookie('usrname',$_POST['usrname'],$cookie_expiry); }
في حال كانت المدخلات في النمودج غير صحيحة سيتم إيقاف تنفيد الصفحة عن طريق دالة die و إظهار رسالة الخطأ التي وضعناها في ملف config

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


إنتهى الدرس

aa-- --bb jjjjjjjjjjjjj
تواصل
يوتيوب فيسبوك إنستغرام