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

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

1405/05/01 20:10 محراب حسن زاده
آموزش جامع کوکی (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'
]);

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)
1405/05/04 23:40

آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)

مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها
1402/06/05 00:13

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

مطالعه بیشتر
آموزش Pseudo-classes در CSS: تغییر استایل عناصر با hover، focus و nth-child
1402/06/10 18:22

آموزش Pseudo-classes در CSS: تغییر استایل عناصر با hover، focus و nth-child

مطالعه بیشتر
آموزش گام به گام طراحی مگا منو (Mega Menu) مدرن با CSS و HTML
1405/03/13 23:44

آموزش گام به گام طراحی مگا منو (Mega Menu) مدرن با CSS و HTML

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

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

مطالعه بیشتر
آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع
1403/07/28 21:41

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر
آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها
1402/11/02 23:10

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

مطالعه بیشتر
تفاوت Session و Cookie در PHP؛ راهنمای جامع و کاربردی طبق استاندارد گوگل
1405/05/01 20:14

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

مطالعه بیشتر
آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها
1403/06/02 20:49

آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها

مطالعه بیشتر
مفهوم متغیرها و انواع داده در جاوا اسکریپت: راهنمای جامع برای مبتدیان
1402/06/28 00:07

مفهوم متغیرها و انواع داده در جاوا اسکریپت: راهنمای جامع برای مبتدیان

مطالعه بیشتر
آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها
1403/08/01 20:05

آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها

مطالعه بیشتر
آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع
1402/06/04 23:55

آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع

مطالعه بیشتر

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