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

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

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


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال
1404/09/23 21:10

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال

مطالعه بیشتر
مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟
1405/05/04 23:45

مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟

مطالعه بیشتر
آموزش جامع برنامه‌نویسی شی‌گرا (OOP) در PHP بر اساس استانداردهای گوگل
1405/05/15 00:33

آموزش جامع برنامه‌نویسی شی‌گرا (OOP) در PHP بر اساس استانداردهای گوگل

مطالعه بیشتر
آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR
1405/04/16 01:07

آموزش جامع تعریف تابع سفارشی در PHP طبق استاندارد گوگل و PSR

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

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

مطالعه بیشتر
آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)
1405/04/04 00:22

آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)

مطالعه بیشتر
JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد
1402/06/28 23:35

JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد

مطالعه بیشتر
معرفی جاوا اسکریپت و نحوه استفاده از آن برای توسعه وب تعاملی: راهنمای جامع
1402/06/27 23:35

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

مطالعه بیشتر
آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif
1405/04/04 00:05

آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif

مطالعه بیشتر
آموزش جامع دستور SELECT و نمایش اطلاعات دیتابیس طبق استانداردهای گوگل و سئو
1405/05/13 21:07

آموزش جامع دستور SELECT و نمایش اطلاعات دیتابیس طبق استانداردهای گوگل و سئو

مطالعه بیشتر
آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع
1402/06/05 23:51

آموزش کامل ویژگی background در CSS: تنظیمات پس‌زمینه برای طراحی وب راهنمای جامع

مطالعه بیشتر
استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل
1403/08/16 21:48

استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل

مطالعه بیشتر

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