آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیهساز
سشن (Session) در PHP چیست؟
پروتکل HTTP یک پروتکل Stateless (بدون حالت) است. این یعنی سرور وب پس از فرستادن پاسخ به مرورگر کاربر، کاملاً فراموش میکند که این کاربر کیست! برای حل این مشکل و حفظ اطلاعات کاربر در صفحات مختلف (مثل وضعیت لاگین، سبد خرید و...) از دو ابزار به نامهای Cookie و Session استفاده میشود.
برخلاف کوکیها که اطلاعات را در مرورگر کاربر ذخیره میکنند، سشنها اطلاعات را روی سرور ذخیره میکنند و امنیت بسیار بالاتری دارند. مرورگر کاربر تنها یک شناسه یکتا به نام Session ID (معمولاً در قالب یک کوکی موقت) دریافت میکند تا سرور بتواند هر کاربر را شناسایی کند.
نحوه کارکرد سشن در PHP
فرآیند کار با سشن بسیار ساده است. وقتی شما یک سشن را شروع میکنید، PHP بررسی میکند که آیا کاربر از قبل شناسه سشن دارد یا خیر. اگر نداشت، یک شناسه جدید و یکتا برای او میسازد و فایل مربوط به آن را روی سرور ایجاد میکند.
۱. شروع سشن با متد session_start
برای استفاده از سشن در PHP، حتماً باید قبل از ارسال هرگونه خروجی HTML به مرورگر، تابع session_start() را فراخوانی کنید. این تابع سشن فعلی را فعال کرده یا یک سشن جدید میسازد.
// شروع سشن - باید اولین خط کد قبل از هر تگ HTML باشد
session_start();
// ذخیره اطلاعات در سشن
$_SESSION["username"] = "Morteza";
$_SESSION["email"] = "info@example.com";
echo "سشن با موفقیت ایجاد شد و مقادیر ذخیره شدند.";
۲. خواندن اطلاعات از سشن
پس از شروع سشن در هر صفحه دیگری از سایت، میتوانید به متغیر سوپرگلوبال $_SESSION دسترسی داشته باشید و اطلاعات کاربر را بخوانید:
session_start();
// بررسی وجود داشتن متغیر در سشن
if (isset($_SESSION["username"])) {
echo "خوش آمدید، " . $_SESSION["username"];
} else {
echo "شما وارد سیستم نشدهاید.";
}
۳. تغییر و بهروزرسانی مقادیر سشن
برای ویرایش اطلاعات موجود در سشن، کافی است مقدار جدید را به همان کلید اختصاص دهید:
session_start();
// تغییر نام کاربری ذخیره شده
$_SESSION["username"] = "Ali";
۴. حذف متغیرها و نابود کردن سشن
گاهی اوقات مانند فرآیند خروج از حساب کاربری (Logout)، نیاز دارید که سشن را پاک کنید. برای این کار دو متد اصلی وجود دارد:
- session_unset(): تمام متغیرهای سشن فعلی را آزاد و پاک میکند.
- session_destroy(): کل سشن و فایلهای مربوط به آن را روی سرور به طور کامل نابود میکند.
session_start();
// حذف تمامی متغیرهای سشن
session_unset();
// نابود کردن کل سشن
session_destroy();
echo "سشن با موفقیت پاک شد و شما خارج شدید.";
نکات امنیتی بسیار مهم در مدیریت سشنها
سشنها به دلیل ذخیره اطلاعات حساس مانند وضعیت لاگین کاربران، هدف اصلی هکرها برای حملاتی چون Session Hijacking (ربودن سشن) هستند. برای افزایش امنیت سشنها در PHP، حتماً موارد زیر را رعایت کنید:
۱. تولید مجدد شناسه سشن (Session ID)
پس از هر بار ورود کاربر یا تغییر سطح دسترسی او، شناسه سشن را مجدداً تولید کنید تا هکرهای احتمالی نتوانند از شناسههای قدیمی استفاده کنند:
session_start();
// تولید مجدد شناسه سشن و حذف شناسه قبلی
session_regenerate_id(true);
۲. تنظیم کوکیهای سشن به صورت ایمن
قبل از شروع سشن، میتوانید تنظیمات کوکی سشن را به گونهای قرار دهید که فقط از طریق پروتکل امن HTTPS قابل دسترسی باشد و کدهای جاوااسکریپت نتوانند به آن دسترسی پیدا کنند (محافظت در برابر XSS):
session_start([
'cookie_lifetime' =--> 86400, // مدت زمان اعتبار کوکی
'cookie_secure' => true, // فقط روی HTTPS ارسال شود
'cookie_httponly' => true, // عدم دسترسی جاوااسکریپت به کوکی سشن
'use_only_cookies' => true // سشن فقط از طریق کوکی کار کند
]);
نتیجهگیری
سشنها ابزاری قدرتمند و امن برای ذخیره اطلاعات موقت کاربران در وبسایتهای PHP هستند. با رعایت نکات امنیتی مانند بازسازی شناسه سشن و استفاده از فلگهای HttpOnly، میتوانید برنامههای تحت وب خود را در برابر نفوذ هکرها بیمه کنید.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید