آموزش رایگان PHP

آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیه‌ساز

1م مرداد 1405 محراب حسن زاده
آموزش جامع 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، می‌توانید برنامه‌های تحت وب خود را در برابر نفوذ هکرها بیمه کنید.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

Async/Await: نوشتن کدهای خواناتر و ناهم‌زمان در جاوا اسکریپت - آموزش کامل با مثال‌ها
30م مهر 1403

Async/Await: نوشتن کدهای خواناتر و ناهم‌زمان در جاوا اسکریپت - آموزش کامل با مثال‌ها

مطالعه بیشتر
آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها
12م آبان 1403

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها

مطالعه بیشتر
مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها
2م آبان 1403

مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها

مطالعه بیشتر
آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها
2م بهمن 1402

آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها

مطالعه بیشتر
آموزش ساخت Toggle Switch با CSS: طراحی دکمه‌های تغییر وضعیت جذاب و واکنش‌گرا
16م آبان 1403

آموزش ساخت Toggle Switch با CSS: طراحی دکمه‌های تغییر وضعیت جذاب و واکنش‌گرا

مطالعه بیشتر
عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف
28م شهریور 1402

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

مطالعه بیشتر
آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت
23م مرداد 1402

آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت

مطالعه بیشتر
درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی
24م آذر 1404

درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی

مطالعه بیشتر
مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on
28م شهریور 1402

مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on

مطالعه بیشتر
درک و استفاده از Watchers در Vue.js | آموزش Watch با مثال کاربردی
28م آذر 1404

درک و استفاده از Watchers در Vue.js | آموزش Watch با مثال کاربردی

مطالعه بیشتر
آموزش جامع حلقه‌های while و do while در PHP به زبان ساده و کاربردی
4م تیر 1405

آموزش جامع حلقه‌های while و do while در PHP به زبان ساده و کاربردی

مطالعه بیشتر
آموزش دسترسی به المان‌های HTML با استفاده از جاوا اسکریپت: راهنمای کامل با مثال‌ها
2م آبان 1403

آموزش دسترسی به المان‌های HTML با استفاده از جاوا اسکریپت: راهنمای کامل با مثال‌ها

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد