کار با کوکی ها در PHP

  • آپدیت شده در تاریخ

کار با کوکی ها در PHP

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

تفاوت اصلی کوکی و session در این است که کوکی ها در کامپیوتر کاربر ذخیره می شود اما session در سرور ذخیره می شود. کوکی ها را می توان به صورت دستی حذف کرد که این کار از نظرامنیتی امری درست نیست.

چرا ما از کوکی ها استفاده می کنیم ؟

در یک فایل کوکی می توان اطلاعات و تنظیمات کاربر را در ۴۰۰۰ کاراکترذخیره سازی کرد. برخی از کاربردهای کوکی در زیر بیان شده است :

  • برخی از وبسایت ها صفحات سفارشی و نتایج مختلفی متناسب با هر کاربر ارائه می دهند. این اطلاعات را می توان از داده های ذخیره شده در کوکی به دست آورد..
  • برخی از وبسایت ها از کوکی ها برای ورود کاربران به صورت خودکار به وبسایت استفاده می کنند. با ذخیره اطلاعات کاربر در کوکی می توانند آنهارا بطور خودکار اعتبار سنجی کنند و در زمان کاربر برای ورود صرفه جویی کنند.
  • سایت های آماری از کوکی ها برای پیگیری کاربران خود استفاده می کنند. با استفاده از کوکی یک کاربر بیش از یک بار در وبسایت مورد شمارش قرار نمی گیرد و آمار کاربران را به صورت منحصر به فرد می توان به دست آورد.

امنیت کوکی ها :

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

اگر وبسایت از کوکی برای ذخیره کلمه عبور استفاده کند این کلمه عبور قابل خواندن است که یک تهدید برای هک شدن می توان در نظر گرفت. اما اگر همان پسورد را با استفاده از روش هایی مانند hash کد گذاری کنیم به نسبت قبل امنیت آن بالا می رود.

 

استفاده از کوکی ها

کوکی ها برای اهداف مختلفی مانند :

  • ذخیره تنظیمات ظاهر صفحه کاربر (رنگ ، اندازه قلم ، اندازه عناصر صفحه ، قالب و…)
  • پیگیری پیشرفت (درصد ، شماره صفحه و…)
  • ذخیره نام کاربری یا شماره ها (برای اعتبارسنجی کاربر)

استفاده می شوند . در ادامه می خواهیم کار با کوکی ها در PHP را یاد بگیریم.

 

ست کردن کوکی

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

اگر این کد را اجرا کنیم ، یک کوکی به اسم browser با مقدار Chrome بر روی کامپیوتر کاربر می سازد ، و این کوکی بعد از یک ساعت منقضی خواهد شد .میتئانیم کوکی هایی با مقادیر مختلف و تاریخ انقضا های متفاوت ایجاد کنیم که بعدا آن ها را برای اهداف مختلف بازیابی کنیم.

یک کوکی می تواند با پارامتر های مختلف دیگری هم ساخته شود، که شامل مسیر ، دامنه ، secure و httponly باشد.

اگر برای مسیر(path) مقدار “/”  را ست کنیم ، کوکی در تمامی قسمت های آن دامنه در دسترس خواهد بود ، ولی اگر به اینصورت مثلا “/myfolder” ست کنید فقط در این فولدر و زیر شاخه های آن در دسترس خواهد بود.

 

دریافت مقادیر کوکی

یکبار که کوکی ساخته شد با متغیر سراسری $_COOKIE می توانیم به آن کوکی و مقادریرش دسترسی داشته باشیم.

کد بالا یک خطا چاپ می کند ، اگر کوکی به اسم browser وجود نداشته باشد . پس برای جلوگیری از این خطاها اول از همه چک می کنیم که آیا همچنین کوکی وجود دارد یا نه.

یا راه کوتاه تر :

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

 

حذف کوکی

برای حذف کوکی کافیست که یک زمان منقضی شده به کوکی خود اضافه کنیم

زمانی که این کد اجرا شود ، زمان انقضا کوکی کاربر جایگزین مقدار جدید خواهد شد و کوکی کاربر بلافاصله از مرورگر کاربر حذف می شود.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۳)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. محمود رنجبر ۱۸ بهمن ۱۴۰۰

    سلام مهندس شفیعی خسته نباشید
    وقتی از کوکی استفاده میکنیم باید صفحه رو رفرش کنیم تا بتونیم به مقدارش دسترسی پیدا کنیم چیکار کنیم وقتی set شد نیازی به رفرش نباشه و همون لحظه به مقدارش دسترسی داشته باشیم

    پاسخ
    1. حسن شفیعی ۱۹ بهمن ۱۴۰۰

      سلام. ممنون.
      باید رفرش بشه تا بتونید بهش دسترسی پیدا کنید

      پاسخ
  2. محمد ۲۰ دی ۱۴۰۰

    سلام ، مشکل من این است که وقتی از مرورگر خارج می شوم یا ادرس سایت رو دوباره می رم کوکی ها مقدارشان deleted می شود؟

    پاسخ
    1. حسن شفیعی ۲۰ دی ۱۴۰۰

      سلام. باید یه زمان به ثانیه به کوکی بدید تا حذف نشه

      پاسخ
      1. پارسا ۲۰ دی ۱۴۰۰

        حل نشد و بازهم در هنگام خروج و ورود حذف می شوند.

        پاسخ
  3. محمد طاها ۱۱ مهر ۱۳۹۹

    با سلام و خسته نباشید خدمت شما اگر بخواهیم یک مقدار در یک کوکی را عوض کنیم باید چه کار کنیم ؟

    پاسخ
    1. حسن شفیعی ۱۱ مهر ۱۳۹۹

      سلام ممنون.
      به اینصورت
      setcookie(“$name”, $cookie_val, time()+3600, ‘/’)

      از اول باید تایم و نام و مقدار رو وارد کنید و حتما برای آرگومان چهارم همانند مثال بالا / قرار بدید

      پاسخ
      1. محمد طاها ۱۱ مهر ۱۳۹۹

        با سلام ممنون درست شد واقعا سایتتون عالیه بهترین سایت php ایرانی که من دیدم

        پاسخ
      2. حسن شفیعی ۱۱ مهر ۱۳۹۹

        خواهش می کنم.
        خوشحالیم که مفید واقع شده
        موفق باشید.

        پاسخ
  4. ایمان ۲۰ اسفند ۱۳۹۸

    سلام
    موقع اجرا این ارور رو داد :
    Warning: Cannot modify header information – headers already sent by (output started at /home/safedeal/public_html/index.php:1) in /home/safedeal/public_html/index.php on line 6
    خط اول فقط کد ?>php هست و خط ۶ هم کد ایجاد کوکی.
    توی یک سایت انجام میشه ولی توی یک سایت دیگه هیچ تغییری نمی کنه.
    مشکل به نظرتون از کجا میتونه باشه؟
    نکته : توی هر دو سایت بعد لاگین کوکی خود php هست.

    پاسخ
    1. حسن شفیعی ۲۰ اسفند ۱۳۹۸

      سلام. برای حل مشکل این دو آموزش را مطالعه کنید :
      Output Buffering در PHP
      خطاها در PHP
      موفق باشید.

      پاسخ
      1. ایمان ۲۰ اسفند ۱۳۹۸

        از بافرها استفاده کردم و در لیست خطاها هم نبود.
        سورس من : http://8upload.ir/uploads/f91654468.png
        ممنون میشم یک بررسی کنید.

        پاسخ
      2. حسن شفیعی ۲۰ اسفند ۱۳۹۸

        مربوط به محیط اجراتون هست که باید مواردی رو امتحان کنید.
        فایلتون باید utf8 without boom باشه.
        قبل setcookie نباید هیچ خروجی وجود داشته باشه.
        قبل

        پاسخ
دوره های آموزشی