گام ۶: نشست‌ها (Sessions)

به دنیای «حافظه سرور» خوش آمدید. جایی که سرور دیگر آلزایمر ندارد!

مشکل بزرگ HTTP: پروتکل وب (HTTP) ذاتا بی‌حالت (Stateless) است. یعنی وقتی کاربر از صفحه A به صفحه B می‌رود، سرور کاملاً فراموش می‌کند که او کیست و در صفحه قبلی چه کرده است.

برای حل این مشکل، ما از Session استفاده می‌کنیم. سشن مثل یک کمد اختصاصی برای هر کاربر در سمت سرور است که تا زمانی که مرورگرش باز است، اطلاعاتش (مثل وضعیت لاگین، سبد خرید و...) در آن کمد باقی می‌ماند.

تفکر الگوریتمی: قبل از کدنویسی

در این گام، ما می‌خواهیم یک سیستم لاگین کامل بسازیم. قبل از اینکه دست به کیبورد بزنید، باید منطق کار را درک کنید. به فلوچارت زیر دقت کنید:

[START] | v [User opens Login Page] | v < Is Form Submitted?> ----(NO)----> [Show Empty Form] | v (YES) [Validate Input (Step 5)] --(Invalid)--> [Show Error] | v (Valid) < Check Password> --(Wrong)--> [Show Error] | v (Correct) [START SESSION (Step 6A)] | [Save User Data in $_SESSION] | v [Redirect to Dashboard] ----> [Dashboard Page] | < Is Logged In?> --(NO)--> [Redirect to Login] | (YES) [Show User Name] | [Logout Link] --(Click)--> [DESTROY SESSION (Step 6B)] --> [Go to Login]

سطح A: حافظه کوتاه‌مدت سرور

یاد می‌گیریم چطور با session_start() یک حافظه اختصاصی برای کاربر ایجاد کنیم و اطلاعاتی مثل «نام کاربری» را در سوپرگلوبال $_SESSION بنویسیم و در صفحات دیگر بخوانیم.

ورود به سطح A

سطح B: مدیریت و پایان سشن

شروع کردن سشن کافی نیست؛ باید بتوانیم آن را مدیریت و تمام کنیم. یاد می‌گیریم چطور با unset() و session_destroy() سیستم «خروج» (Logout) را پیاده‌سازی کنیم و امنیت سیستم را بالا ببریم.

ورود به سطح B