انتقل إلى محتوى الدرس

Complete Logout and Session Destruction تسجيل الخروج الكامل وتدمير الجلسة والكوكيز

نفّذ نظام تسجيل دخول آمن والتحقق من الهوية وتجديد الجلسة وحراس حماية الصفحات وميزة تذكرني وتسجيل الخروج النظيف في PHP 8.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يجب أن يقبل معالج تسجيل الخروج طلبات POST المحمية بتوكن CSRF فقط، ويفرغ $_SESSION، ويلغي كوكي الجلسة في المتصفح، ثم يستدعي session_destroy().

  • لماذا نستخدم POST /logout؟ لأن جعل الخروج رابط GET يسمح لأي وسم صورة خبيث <img src="/logout"> بإخراج المستخدم قسرياً!
  • أفرغ مصفوفة $_SESSION = [] في الذاكرة قبل تدمير ملف الجلسة.
  • احذف توكن "تذكرني" من قاعدة البيانات ومن كوكيز المتصفح معاً عند الخروج.

تفريغ المصفوفة $_SESSION = [] يزيل جميع بيانات الجلسة فوراً من الذاكرة الحالية.

عملية المصادقةالإجراء الأمني الإلزاميالأهمية الأمنية
Login FailureUnified error message + dummy hash checkPrevents user email enumeration
Login Successsession_regenerate_id(true)Prevents session fixation attacks
Protected RouteAuth guard + exit; after redirectStops unauthorized execution immediately
Remember Me CookieSplit selector:validator (SHA-256 in DB)Prevents token theft from DB leaks
Logout EndpointPOST /logout + CSRF + clear cookiePrevents forced cross-site logout & replay

PHP
<?php

$_SESSION = ['user_id' => 42, 'user_role' => 'admin'];

// Step 1: Clear session array in memory
$_SESSION = [];

// Step 2: Verify memory is clean before session_destroy()
echo "Active Session Keys: " . count($_SESSION) . "\n";
echo "Logout complete -> Redirect to /login\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

يجب أن يقبل معالج تسجيل الخروج طلبات POST المحمية بتوكن CSRF فقط، ويفرغ $_SESSION، ويلغي كوكي الجلسة في المتصفح، ثم يستدعي session_destroy(). لماذا نستخدم POST /logout؟ لأن جعل الخروج رابط GET يسمح لأي وسم صورة خبيث <img src="/logout"> بإخراج المستخدم قسرياً! أفرغ مصفوفة $_SESSION = [] في الذاكرة قبل تدمير ملف الجلسة. احذف توكن "تذكرني" من قاعدة البيانات ومن كوكيز المتصفح معاً عند الخروج.