راهنمای جامع دربارهٔ نشانه‌گذاری جلسه (Session) در HTTP

comprehensive guide to http session management
20 آبان 1403

در دنیای وب، HTTP پروتکل واسط بین کلاینت و سرور است که به شکل بی‌حالت (stateless) عمل می‌کند. این یعنی هر درخواست در HTTP، مستقل و بدون حافظه از درخواست‌های قبلی صورت می‌گیرد. برای مثال، فرض کنید وب‌سایتی دارید که کاربران باید در آن ثبت‌نام کنند. اگر HTTP بی‌حالت است، چطور می‌توانیم به یاد بسپاریم که یک کاربر خاص قبلاً وارد شده است و در حال استفاده از امکانات سایت است؟

اینجاست که مفهوم جلسات یا سشن‌ها (sessions) به میان می‌آید. سشن‌ها به شما کمک می‌کنند تا با ایجاد یک شناسهٔ یکتا برای هر کاربر، وضعیت و فعالیت‌های او را در مدت زمان حضورش در سایت پیگیری کنید. این شناسه در طول مرور آن کاربر بر روی سایت ثابت می‌ماند و به سیستم اجازه می‌دهد تا اطلاعات مربوط به کاربر را ذخیره کند.

یک مثال واقع‌گرایانه از سشن‌ها زمانی است که شما وارد اکانت ایمیلتان می‌شوید. با اینکه هر بار صفحات مختلفی را بارگذاری می‌کنید، به لطف سشن‌ها، سیستم همچنان شما را می‌شناسد و اجازهٔ دسترسی به ایمیل‌ها و اطلاعات شخصی را می‌دهد.

از نظر فنی، معمولاً سشن‌ها با استفاده از کوکی‌ها پیاده‌سازی می‌شوند. یک کوکی می‌تواند شناسهٔ سشن یکتای کاربر را ذخیره کند و هر بار که کاربر یک درخواست جدید ارسال می‌کند، این شناسه به سرور ارسال می‌شود و به سیستم امکان می‌دهد کاربر را شناسایی کند.

حال نگاهی به برخی کدهای نمونه می‌اندازیم که نشان می‌دهند چطور می‌توان سشن‌ها را در یک برنامه وب راه‌اندازی کرد. کد زیر یک مثال ساده از ایجاد و استفاده سشن در یک اسکریپت PHP است:


<?php
session_start();

// Set session variables
$_SESSION["username"] = "JohnDoe";
$_SESSION["email"] = "[email protected]";

// Access session variables
echo "Welcome " . $_SESSION["username"] . "!";

// Unset session variable
unset($_SESSION["username"]);

// Destroy the session
session_destroy();
?>

خط اول: با استفاده از session_start()، یک سشن جدید آغاز می‌شود یا سشن موجود از قبل شروع می‌شود.
خط سوم تا پنجم: این خطوط، متغیرهای سشن را با استفاده از $_SESSION ایجاد می‌کنند که اطلاعات مربوط به کاربر را ذخیره می‌نماید.
خط هفتم: از متغیرهای سشن برای نمایش خوش‌آمدگویی به کاربر استفاده می‌شود.
خط نهم: در اینجا، یک متغیر سشن خاص با استفاده از unset() حذف می‌شود.
خط یازدهم: جهت پایان دادن به سشن و حذف تمام داده‌های ذخیره‌شده در آن، از session_destroy() استفاده می‌شود.

سوالات متداول

؟

چگونه می‌توان سشن‌ها را در PHP فعال کرد؟

؟

چه زمانی باید سشن‌ها را نابود کرد؟

؟

چگونه می‌توانم اطلاعات ذخیره‌شده در سشن را تغییر دهم؟