مدیریت سشن‌ها (Session) در PHP

ذخیره امن اطلاعات کاربر به‌صورت موقت روی سرور و حفظ وضعیت احراز هویت در صفحات مختلف.

نمای کلی

پروتکل HTTP یک پروتکل Stateless (بدون حافظه) است. سشن‌ها راهکار PHP برای به یاد داشتن کاربر هنگام جابه‌جایی بین صفحات وب‌سایت هستند. اطلاعات سشن روی سمت سرور ذخیره می‌شود و تنها یک شناسه یکتا (Session ID) از طریق کوکی به مرورگر کاربر ارسال می‌گردد.

شروع و مدیریت سشن

پیش از هرگونه دسترسی یا مقداردهی به متغیر $_SESSION، باید تابع session_start() در **ابتدایی‌ترین خط کد PHP** (قبل از هرگونه خروجی HTML) فراخوانی شود.

session-demo.php
<?php
// Must be called before any HTML output
session_start();

// Store data in session
$_SESSION['user_id']  = 42;
$_SESSION['username'] = 'reza_dev';

// Read session value safely
if (isset($_SESSION['username'])) {
    echo "Logged in as: " . $_SESSION['username'];
}

?>

حذف و خروج از سشن (Logout)

برای پاک‌سازی کامل سشن و خروج کاربر، از ترکیب session_unset() (پاک کردن آرایه متغیرها) و session_destroy() (حذف فایل سشن از سرور) استفاده می‌شود.

اشتباهات رایج سشن‌ها

خطای Headers already sent

فراخوانی session_start() پس از ارسالی هرگونه کاراکتر، فاصله یا تگ HTML به مرورگر با خطا مواجه خواهد شد.

آسیب‌پذیری Session Hijacking

پس از ورود موفقیت‌آمیز کاربر، همیشه تابع session_regenerate_id(true) را اجرا کنید تا شناسه سشن جدید جایگزین شناسه قبلی شود.

تمرین عملی

اسکریپت ساده‌ای برای ورود بنویسید که نام کاربر را در سشن قرار دهد و در صورت باز کردن مجدد صفحه، پیام "خوش آمدید [نام کاربر]" را نشان دهد و لینکی برای خروج (logout.php) ارائه دهد.

بازگشت به نقشه راه