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

آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل

1م مرداد 1405 محراب حسن زاده
آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل

در دنیای توسعه وب، برای ایجاد یک تجربه کاربری شخصی‌سازی شده و پایدار، نیاز داریم تا اطلاعاتی را در سمت مرورگر کاربر ذخیره کنیم. یکی از قدیمی‌ترین و محبوب‌ترین ابزارها برای این کار، کوکی (Cookie) است. در این مقاله قصد داریم به طور جامع به آموزش کوکی‌ها در زبان PHP و نحوه مدیریت امن آن‌ها طبق استانداردهای گوگل بپردازیم.

کوکی (Cookie) چیست و چگونه کار می‌کند؟

کوکی یک فایل متنی کوچک است که توسط سرور ایجاد شده و در مرورگر کاربر ذخیره می‌شود. هر زمان که کاربر درخواست جدیدی به همان سرور ارسال می‌کند، مرورگر کوکی‌های ذخیره شده را همراه با درخواست ارسال می‌کند. این مکانیزم به سرور اجازه می‌دهد تا کاربر را شناسایی کند و وضعیت تعاملی او را به یاد بسپارد.

نحوه ساخت کوکی در PHP با تابع setcookie

برای ایجاد یک کوکی جدید در PHP، از تابع پیش‌فرض setcookie() استفاده می‌شود. این تابع باید قبل از ارسال هرگونه خروجی HTML به مرورگر فراخوانی شود.

سینتکس پایه این تابع به شکل زیر است:

setcookie(name, value, expire, path, domain, secure, httponly);

توضیح پارامترهای کلیدی:

  • name: نام کوکی (تنها پارامتر اجباری).
  • value: مقداری که در کوکی ذخیره می‌شود.
  • expire: زمان انقضای کوکی به ثانیه (Timestamp). اگر تنظیم نشود، با بستن مرورگر حذف می‌شود.
  • path: مسیری در سرور که کوکی در آن در دسترس است (معمولاً '/' برای کل سایت).
  • secure: اگر روی true تنظیم شود، کوکی فقط از طریق پروتکل امن HTTPS ارسال می‌شود.
  • httponly: اگر true باشد، جاوااسکریپت نمی‌تواند به کوکی دسترسی داشته باشد که این امر امنیت را در برابر حملات XSS به شدت افزایش می‌دهد.

یک مثال عملی برای ساخت کوکی:


$cookie_name = "user_theme";
$cookie_value = "dark";
// تنظیم کوکی برای 30 روز آینده
$expire_time = time() + (86400 * 30);

setcookie($cookie_name, $cookie_value, $expire_time, "/", "", true, true);
echo "کوکی با موفقیت تنظیم شد!";

خواندن مقادیر کوکی‌ها در PHP

برای دسترسی به کوکی‌هایی که قبلاً ذخیره شده‌اند، از متغیر فوق‌سراسری (Superglobal) به نام $_COOKIE استفاده می‌کنیم. قبل از خواندن کوکی، همیشه باید با تابع isset() وجود آن را بررسی کنید.


if(isset($_COOKIE['user_theme'])) {
    $theme = $_COOKIE['user_theme'];
    echo "پوسته انتخابی شما: " . htmlspecialchars($theme);
} else {
    echo "هیچ پوسته‌ای انتخاب نشده است. پوسته پیش‌فرض فعال شد.";
}

حذف یک کوکی در PHP

در PHP تابع مستقیمی به نام delete_cookie وجود ندارد! برای حذف یک کوکی، کافی است مجدداً همان کوکی را با زمان انقضایی در گذشته (مثلاً یک ساعت قبل) بازنویسی کنید.


// تغییر زمان انقضا به یک ساعت قبل جهت حذف کوکی
setcookie("user_theme", "", time() - 3600, "/");
echo "کوکی با موفقیت حذف شد.";

امنیت کوکی‌ها و استانداردهای نوین گوگل

گوگل و مرورگرهای مدرن (مانند کروم) قوانین سخت‌گیرانه‌ای برای استفاده از کوکی‌ها دارند. برای هماهنگی با این استانداردها و افزایش امنیت وب‌سایت خود، حتماً موارد زیر را رعایت کنید:

  1. فلگ HttpOnly: همیشه این فلگ را برابر با true قرار دهید تا هکرها نتوانند از طریق کدهای مخرب جاوااسکریپت، کوکی‌های حساس را سرقت کنند.
  2. فلگ Secure: از اتصال SSL (HTTPS) استفاده کرده و فلگ Secure را فعال کنید.
  3. ویژگی SameSite: این ویژگی برای جلوگیری از حملات CSRF حیاتی است. در PHPهای مدرن می‌توانید آن را روی یکی از مقادیر Lax یا Strict تنظیم کنید.

تنظیم کوکی امن در PHP 7.3 به بالا:


setcookie("secure_user_id", "98765", [
    'expires' =--> time() + 3600,
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Lax'
]);

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

مفاهیم پیشرفته اشیاء در جاوا اسکریپت: مدیریت خصوصیات و متدها
4م مهر 1403

مفاهیم پیشرفته اشیاء در جاوا اسکریپت: مدیریت خصوصیات و متدها

مطالعه بیشتر
تفاوت Session و Cookie در PHP؛ راهنمای جامع و کاربردی طبق استاندارد گوگل
1م مرداد 1405

تفاوت Session و Cookie در PHP؛ راهنمای جامع و کاربردی طبق استاندارد گوگل

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

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

مطالعه بیشتر
آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای
12م آبان 1403

آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای

مطالعه بیشتر
آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)
4م تیر 1405

آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)

مطالعه بیشتر
کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب
11م آبان 1403

کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب

مطالعه بیشتر
نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان
28م شهریور 1402

نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان

مطالعه بیشتر
معرفی DOM و اصول آن در جاوا اسکریپت: راهنمای جامع برای مبتدیان
1م آبان 1403

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

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
18م مرداد 1402

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
آموزش ایجاد، دسترسی و اصلاح آرایه‌ها در جاوا اسکریپت: راهنمای کامل
4م مهر 1403

آموزش ایجاد، دسترسی و اصلاح آرایه‌ها در جاوا اسکریپت: راهنمای کامل

مطالعه بیشتر
نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue
28م شهریور 1402

نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue

مطالعه بیشتر
آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)
21م خرداد 1405

آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)

مطالعه بیشتر

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