کوکیها و سشنها
ذخیره اطلاعات کاربر بین صفحات — تفاوت کوکی و سشن، نحوه استفاده و کاربردها
چرا به کوکی و سشن نیاز داریم؟
HTTP یک پروتکل بدون حالت (Stateless) است — یعنی هر درخواست مستقل است و سرور اطلاعات کاربر را بین صفحات به یاد نمیسپارد. کوکی و سشن این مشکل را حل میکنند.
کوکی (Cookie) چیست؟
کوکی فایل کوچکی است که در مرورگر کاربر ذخیره میشود. در درخواستهای بعدی، مرورگر آن را برای سرور میفرستد.
| ویژگی | کوکی |
|---|---|
| کجا ذخیره میشود؟ | مرورگر کاربر |
| حجم | حداکثر ۴KB |
| مدت زمان | قابل تنظیم (تا سالها) |
| امنیت | کم — کاربر میبیند و تغییر میدهد |
| کاربرد | یادآوری، تنظیمات، ردیابی |
تنظیم کوکی — setcookie()
<?php
// نام، مقدار، زمان انقضا
setcookie("username", "علی", time() + 86400); // ۱ روز
// با تنظیمات کامل
setcookie(
"theme",
"dark",
time() + (86400 * 30), // ۳۰ روز
"/",
"",
true, // secure (فقط HTTPS)
true // httponly (JavaScript دسترسی ندارد)
);
?>
خواندن کوکی
<?php
if (isset($_COOKIE["username"])) {
echo "سلام " . $_COOKIE["username"];
}
?>
حذف کوکی
<?php
// با تنظیم زمان در گذشته
setcookie("username", "", time() - 3600);
?>
سشن (Session) چیست؟
سشن اطلاعات را روی سرور ذخیره میکند. هر کاربر یک ID منحصربهفرد دریافت میکند (Session ID) که در کوکی مرورگر ذخیره میشود.
| ویژگی | سشن |
|---|---|
| کجا ذخیره میشود؟ | سرور |
| حجم | نامحدود |
| مدت زمان | تا بستن مرورگر یا timeout |
| امنیت | بالا — کاربر به داده دسترسی ندارد |
| کاربرد | ورود کاربر، سبد خرید |
شروع سشن — session_start()
<?php
// باید در ابتدای صفحه باشد (قبل از هر خروجی)
session_start();
// ذخیره اطلاعات
$_SESSION["user_id"] = 123;
$_SESSION["username"] = "علی";
$_SESSION["role"] = "admin";
?>
خواندن سشن
<?php
session_start();
if (isset($_SESSION["username"])) {
echo "خوش آمدی " . $_SESSION["username"];
}
?>
حذف سشن
<?php
session_start();
// حذف یک متغیر
unset($_SESSION["username"]);
// حذف تمام سشن
session_destroy();
?>
تفاوت کوکی و سشن
| ویژگی | کوکی | سشن |
|---|---|---|
| محل ذخیره | مرورگر | سرور |
| امنیت | کم | زیاد |
| حجم | محدود (۴KB) | نامحدود |
| عمر | طولانیمدت | کوتاهمدت |
| دسترسی کاربر | دارد | ندارد |
قانون کلی: برای اطلاعات حساس (ورود، پرداخت) از سشن و برای تنظیمات ساده (تم، زبان) از کوکی استفاده کنید.
این مبحث بخشی از دوره آموزش کامل PHP است.