آموزش PHP

آموزش PHP - کوکی ها

کوکی ها فایل های متنی ذخیره شده در رایانه کاربر هستند و آنها از هدف ردیابی استفاده می کنند. PHP transparently از کوکی های HTTP پشتیبانی می کند.

سه مرحله در شناسایی بازگشت کاربران وجود دارد:

  • اسکریپت سرور مجموعه ای از کوکی ها را به مرورگر ارسال می کند. به عنوان مثال نام، سن، یا شناسه و غیره. 
  • مرورگر این اطلاعات را در دستگاه local برای استفاده در آینده ذخیره می کند.
  • هنگامی که مرورگر زمان بعدی هر درخواستی را به سرور وب ارسال می کند، این اطلاعات کوکی ها را به سرور می فرستد و سرور از آن اطلاعات برای شناسایی کاربر استفاده می کند. 

این فصل به شما چگونه تنظیم کوکی ها و نحوه دسترسی و حذف آنها را آموزش می دهد. 

آناتومی Cookie

کوکی ها معمولا در یک هدر HTTP قرار می گیرند (اگر چه جاوا اسکریپت همچنین می تواند یک کوکی را به طور مستقیم در مرورگر تنظیم کند). یک اسکریپت PHP که کوکی را تنظیم می کند ممکن است هدرهایی را بنویسد که چیزی شبیه به این می باشند:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html

همانطور که می بینید، هدر تنظیم کوکی (Set-Cookie) حاوی یک جفت مقدار نام، تاریخ GMT، یک مسیر و یک دامنه می باشد. نام و مقدار URL رمزگذاری خواهد شد. فیلد expires یک دستورالعمل برای مرورگر است تا "cookie (کوکی)" را پس از زمان و تاریخ داده شده فراموش کند. 

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

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

سپس یک اسکریپت PHP به کوکی در متغیرهای محیطی $_COOKIE یا $HTTP_COOKIE_VARS[] که تمام نام و مقادیر کوکی را نگه می دارد دسترسی خواهد داشت. کوکی بالا می تواند با استفاده از $HTTP_COOKIE_VARS["name"] قابل دسترسی باشد. 

تنظیم Cookieها با PHP

PHP   تابع  setcookie ()را برای تنظیم کوکی ارائه می کند. این تابع نیاز به تا شش آرگومان دارد و باید قبل از تگنامیده شود. برای هر کوکی این تابع باید جداگانه نامیده شود.

setcookie(name, value, expire, path, domain, security);

در اینجا جزئیات تمام آرگومان ها قرار دارد:

  • Name: نام کوکی را تنظیم می کند و در یک متغیر محیطی به نام HTTP_COOKIE_VARS ذخیره می شود. این متغیر در هنگام دسترسی به کوکی ها استفاده می گردد.
  • Value: مقدار متغیر نامیده می شود و محتویاتی است که شما واقعا می خواهید ذخیره کنید.
  • Expiry: یک زمان آینده در ثانیه از 00:00:00 GMT در تاریخ 1 ژانویه 1970 مشخص می کند. بعد از این که زمان کوکی بگذرد کوکی غیر قابل دسترس است. اگر این پارامتر تنظیم نشده باشد، کوکی زمانی که مرورگر وب بسته شده، به طور خودکار از بین می رود.
  • Path : فهرست دایرکتوری را برای کوکی معتبر می کند. یک کاراکتر اسلش اجازه می دهد که کوکی برای تمام دایرکتوری ها معتبر باشد.
  • Domain : این می تواند برای تعیین نام دامنه در دامنه های بسیار بزرگ استفاده شود و باید حداقل دو دوره باشد تا معتبر گردد. تمام کوکی ها فقط برای میزبان و دامنه که آنها را ایجاد کرده اند، معتبر هستند.
  • Security : این را می توان به 1 تنظیم کرد تا مشخص شود کوکی باید تنها با انتقال امن و با استفاده از HTTPS ارسال شود در غیر اینصورت به 0 تعیین می شود که کوکی را می توان با استفاده از HTTP معمولی ارسال می گردد.

مثال زیر دو کوکی name و age را ایجاد می کند و این کوکی ها بعد از یک ساعت منقضی می شوند.

<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
   
   <head>
      <title>Setting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Set Cookies"?>
   </body>
   
</html>

 

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

PHP  بسیاری از راه های دسترسی به کوکی ها را فراهم می کند. ساده ترین راه استفاده از متغیرهای $_COOKIE یا $HTTP_COOKIE_VARS است. مثال زیر به تمام کوکی هایی که در مثال بالا داده شده دسترسی پیدا می کند.

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["age"] . "<br />";
      ?>
      
   </body>
</html>

می توانید از ()isset برای بررسی اینکه آیا یک کوکی تنظیم شده است یا خیر، استفاده کنید.

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "<br />";
         
         else
            echo "Sorry... Not recognized" . "<br />";
      ?>
      
   </body>
</html>

 

پاک کردن کوکی با PHP 

به طور رسمی، برای حذف کوکی باید ()setcookie با نام آرگومان را فراخوانی کنید، اما این کار همیشه به خوبی انجام نمی شود و نباید به آن متکی بود. 

تنظیم کوکی به تاریخ که قبلا منقضی شده امن تر است:

<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
   
</html>
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...