نیک آموز > وبلاگ > زبان های برنامه نویسی > بررسی تخصصی کوکی و سشن در PHP سال۲۰۲۶ !
بررسی تخصصی کوکی و سشن در PHP سال۲۰۲۶ !

بررسی تخصصی کوکی و سشن در PHP سال۲۰۲۶ !

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۸ آبان ۱۴۰۱
آخرین بروزرسانی: 24 اسفند 1404
زمان مطالعه: 10 دقیقه
۴.۵
(۴)

کوکی و سشن در PHP چیست؟ چه کاربردی دارد؟ اگر با برنامه‌نویسی php آشنایی دارید و یا زیاد در فضای اینترنت جستجو می‌کنید، حتما تا الان با مفاهیمی مانند کوکی و سشن برخورد کرده‌اید. در برنامه‌نویسی php اطلاعات بازدیدکنندگان را برای استفاده در سایت می‌توان در سشن ها و یا کوکی‌ها ذخیره کرد؛ یعنی کوکی و سشن در php یک وظیفه مشابه را به عهده دارند. با نیک آموز همراه باشید.

اما باید بدانید که بین session و cookie تفاوت‌هایی نیز وجود دارد که موجب شده از هر کدام از آن‌ها در موقعیت‌های به‌خصوصی استفاده شود. در این مقاله ابتدا مفاهیم کوکی و سشن را معرفی می‌کنیم و سپس درباره تفاوت‌های آن‌ها حرف می‌زنیم.

 

آشنایی با مفاهیم کوکی و سشن در PHP

کوکی و سشن در PHP چیست؟ پیش از اینکه در خصوص تفاوت‌های session و cookie در php صحبت کنیم، لازم است کمی با مفاهیم این دو واژه بیشتر آشنا شویم. از کوکی‌ها و سشن‌ها برای ذخیره‌سازی اطلاعات کاربران سایت استفاده می‌شود. این دو قابلیت می‌توانند مشخصات و اطلاعات کاربرانی را که برای بازدید به وب‌سایت‌ها مراجعه کرده‌اند، ذخیره‌سازی کنند و در اختیار شما قرار دهند.

اما هرکدام از این دو مفهوم دارای تعاریف مجزا از یکدیگر بوده و قابلیت‌های متفاوتی دارند که آن‌ها را برای استفاده در موقعیت‌های مختلفی مناسب می‌کند. اجازه دهید در ابتدا شما را به‌صورت کامل با تعاریف کوکی و سشن در php آشنا کنیم.

• کوکی‌ها (Cookie)

کوکی‌ها در واقع یک فایل متنی کوچک هستند که در رایانه کاربر ذخیره می‌شوند. آن‌ها دارای اندازه‌ای نهایتاً ۴ کیلوبایتی بوده و همچنین به‌عنوان کوکی HTTP، کوکی وب یا کوکی اینترنت نیز ‌شناخته می‌شوند. هر زمان که کاربر برای اولین‌بار از یک وب‌سایت بازدید می‌کند، سایت بسته‌هایی از داده‌ها را در قالب یک کوکی به رایانه کاربر ارسال خواهد کرد. در واقع کوکی‌ها به کمک وب‌سایت‌ها می‌آیند تا هنگام بازدید کاربران، سابقه مرور، اطلاعات سبد خرید و غیره را ذخیره کنند.

کوکی و سشن در php می‌توانند مزایای زیادی را با خود به همراه داشته باشند. برای مثال کوکی‌ها تمام فعالیت‌های کاربران را هنگام باز کردن یک وب‌سایت، پیگیری می‌کنند. داده‌های ذخیره شده توسط کوکی‌ها از نوع رشته‌ای خواهد بود؛ اما باید به این نکته اشاره شود که این داده‌ها در کوکی‌ها امن نبوده و به‌راحتی قابل‌دسترسی هستند. البته تنظیمات کوکی در مرورگرها این اجازه را به کاربران می‌دهد تا هر زمان که بخواهند کوکی‌ها را غیرفعال یا مجدداً فعال کنند.

• سشن ها (Session)

برای درک بهتر تفاوت بین کوکی و سشن در php نیاز است با مفهوم سشن نیز آشنا شوید. یک سشن برای ذخیره موقت اطلاعات بر روی سرور استفاده می‌شود. سشن یک کاربر زمانی آغاز به کار می‌کند که او به یک شبکه به‌خصوص وارد می‌شود. هرگاه که کاربر از برنامه خارج شده یا سیستم خود را خاموش ‌کند، سشن او به پایان خواهد رسید.

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

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

تفاوت بین کوکی و سشن در PHP

حال که به‌خوبی با مفاهیم session و cookie آشنایی پیدا کرده‌اید، شاید شما هم متوجه تفاوت بین این دو مفهوم شده باشید. درهرصورت ما در این قسمت به بزرگ‌ترین تفاوت‌های بین کوکی‌ها و سشن‌ها اشاره می‌کنیم. اول ‌از همه باید بدانید که کوکی‌ها فایل‌های سمت سرویس‌گیرنده هستند که حاوی اطلاعات کاربران خواهند بود. این در حالی است که سشن¬ها فایل‌های سمت سرور هستند که اطلاعات کاربر را در اختیار دارند.

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

از دیگر تفاوت‌های بین کوکی و سشن در php می‌توان به سایز و اندازه آن‌ها اشاره کرد. یک کوکی حداکثر دارای اندازه ۴ کیلوبایتی است، درحالی‌که یک سشن می‌تواند به‌اندازه دلخواه داده ذخیره کند. کوکی‌ها تابعی به نام unsetcookie() ندارند؛ درحالی‌که در پیاده‌سازی سشن ها می‌توانید از دستور Session_destroy() برای ازبین‌بردن تمام داده‌های ثبت شده یا برای تنظیم برخی از آن‌ها استفاده کنید.

 

 

کار با کوکی و سشن در PHP

حال که به‌صورت کامل با مفاهیم کوکی و سشن در php و تفاوت‌هایشان آشنا شدید، زمان آن رسیده است که درباره نحوه کار آن‌ها در زبان برنامه‌نویسی php نیز اطلاعاتی را در اختیار شما قرار دهیم. در ادامه این بخش برای آشنایی با مقدمات کار با ما همراه باشید.

• سشن

برای استفاده از سشن‌ها در php در مرحله اول باید از طریق روش GET یا POST درخواست کلاینت به سرور ارسال شود. در مرحله بعد از آن sessionID روی سرور ایجاد شده و در پایگاه‌داده ذخیره می‌شود و با یک کوکی به‌عنوان پاسخ، به سمت مشتری بازگردانده می‌شود. پس از آن که کوکی با sessionID ذخیره شده در مرورگر به سرور بازگردانده شد، سرور این شناسه را با sessionID ذخیره شده مطابقت داده و پاسخ را به HTTP200 ارسال می‌کند.

• کوکی

کار با کوکی‌ها در php بسیار ساده است. برای ایجاد یک کوکی در php باید از تابع setcookie() استفاده کنیم و آن را قبل از تگ <html> قرار دهیم. سینتکس این تابع به شکل «setcookie (نام، مقدار، انقضا، مسیر، دامنه، امن، فقط http)» خواهد بود. البته باید اشاره کرد که در این سینتکس تنها آرگومان نام موردنیاز بوده و مابقی آرگومان‌ها اختیاری هستند.

 

نتیجه‌گیری کوکی و سشن در PHP

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

سوالات متداول کوکی و سشن در PHP

۱. کوکی (Cookie) چیست و چه کاربردی دارد؟

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

۲. تفاوت اصلی کوکی و سشن (Session) چیست؟

  • پاسخ:
  • کوکی: در سمت مرورگر (Client-side) کاربر ذخیره می‌شود و داده‌ها را برای مدت زمان مشخصی (که توسط سرور تعیین می‌شود) نگه می‌دارد. حجم اطلاعات قابل ذخیره در کوکی محدود است.
  • سشن: در سمت سرور (Server-side) ذخیره می‌شود و اطلاعات کاربر را در طول یک “نشست” یا بازدید او از سایت مدیریت می‌کند. برای هر کاربر یک شناسه سشن منحصر به فرد ایجاد می‌شود که معمولاً از طریق کوکی به مرورگر او ارسال می‌گردد. حجم اطلاعات در سشن محدودیت کمتری نسبت به کوکی دارد و امن‌تر است.

۳. کوکی‌ها چگونه در PHP ساخته و ارسال می‌شوند؟

  • پاسخ: با استفاده از تابع setcookie() در PHP می‌توان کوکی ایجاد کرد. این تابع باید قبل از هرگونه خروجی HTML فراخوانی شود. مثال:
php
    <?php
    setcookie("username", "JohnDoe", time() + (۸۶۴۰۰ * ۳۰), "/"); // ۸۶۴۰۰ = 1 day
    ?>

این کوکی با نام “username”، مقدار “JohnDoe” و برای ۳۰ روز معتبر خواهد بود.

۴. چگونه می‌توانیم مقادیر کوکی‌ها را در PHP بخوانیم؟

  • پاسخ: مقادیر کوکی‌ها در آرایه سوپرگلوبال $_COOKIE در دسترس هستند.
php
    <?php
    if(isset($_COOKIE["username"])) {
        echo "نام کاربری ذخیره شده: " . $_COOKIE["username"];
    } else {
        echo "کوکی نام کاربری تنظیم نشده است.";
    }
    ?>

۵. چگونه یک کوکی را در PHP حذف یا منقضی کنیم؟

  • پاسخ: برای حذف کوکی، باید آن را با یک تاریخ انقضای گذشته تنظیم کنید.
php
    <?php
    setcookie("username", "", time() - ۳۶۰۰, "/"); // ۳۶۰۰ = 1 hour ago
    ?>

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

  • پاسخ: برای استفاده از سشن‌ها، ابتدا باید تابع session_start() را در ابتدای هر صفحه‌ای که نیاز به استفاده از سشن دارد، فراخوانی کنید. این تابع باید قبل از هرگونه خروجی HTML باشد. داده‌های سشن در آرایه سوپرگلوبال $_SESSION ذخیره و خوانده می‌شوند.
php
    <?php
    session_start(); // شروع یا ادامه سشن

    // ذخیره داده در سشن
    $_SESSION["favcolor"] = "blue";
    $_SESSION["user_id"] = ۱۲۳;

    // خواندن داده از سشن
    echo "رنگ مورد علاقه: " . $_SESSION["favcolor"] . "<br>";
    echo "شناسه کاربر: " . $_SESSION["user_id"] . "<br>";
    ?>

۷. چگونه یک سشن را در PHP خاتمه دهیم یا تمام داده‌های آن را پاک کنیم؟

  • پاسخ:
  • برای حذف یک متغیر خاص از سشن: unset($_SESSION['variable_name']);
  • برای حذف تمام متغیرهای سشن: session_unset();
  • برای از بین بردن کامل سشن: session_destroy();

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

۸. محدودیت‌های ذخیره‌سازی کوکی و سشن چیست؟

  • پاسخ:
  • کوکی: هر کوکی معمولاً محدودیت ۴ کیلوبایتی دارد و مرورگرها نیز تعداد کوکی‌های قابل ذخیره برای یک دامنه را محدود می‌کنند (معمولاً حدود ۲۰ تا ۵۰ کوکی).
  • سشن: محدودیت کمتری در حجم داده دارد، اما به منابع سرور (فضای ذخیره‌سازی و حافظه) وابسته است. همچنین، سشن‌ها معمولاً پس از مدت زمان مشخصی عدم فعالیت (Timeout) منقضی می‌شوند.

۹. دلایل امنیتی استفاده از سشن به جای کوکی برای داده‌های حساس چیست؟

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

۱۰. چگونه می‌توانیم زمان انقضای (Timeout) سشن را در PHP تنظیم کنیم؟

  • پاسخ: این تنظیمات معمولاً در فایل php.ini سرور انجام می‌شوند، اما می‌توان آن‌ها را به صورت پویا در کد PHP نیز تنظیم کرد (قبل از فراخوانی session_start()):
  • session.gc_maxlifetime: مدت زمان (بر حسب ثانیه) که داده‌های سشن بدون فعالیت باقی می‌مانند تا توسط فرآیند پاکسازی سرور حذف شوند.
  • session.cookie_lifetime: مدت زمان (بر حسب ثانیه) که کوکی شناسه سشن در مرورگر کاربر باقی می‌ماند.

مثال در کد PHP:

php
    <?php
    ini_set('session.gc_maxlifetime', ۳۶۰۰); // سشن برای ۱ ساعت فعال می‌ماند (۳۶۰۰ ثانیه)
    ini_set('session.cookie_lifetime', ۳۶۰۰); // کوکی شناسه سشن هم ۱ ساعت اعتبار دارد
    session_start();
    ?>

 

 

 

💡 مطالعه‌های تکمیلی برای درک بهتر موضوع:

چه رتبه ای می‌دهید؟

میانگین ۴.۵ / ۵. از مجموع ۴

اولین نفر باش

title sign
دانلود مقاله
بررسی تخصصی کوکی و سشن در PHP سال۲۰۲۶ !
فرمت PDF
صفحه
حجم مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
414 مقاله توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران