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

Cookie ها فایل های متنی هستند که در رایانه ی سرویس گیرنده به منظور ردیابی {tracking} کاربر ذخیره می شوند.

PHP مشخصا و بدون شک از cookie های  HTTP پشتیبانی می کند.

شناسایی returning users سه مرحله دارد.

server script {پردازه ی سرویس دهنده} مجموعه ای از کوکی ها را به مرورگر می فرستد. مانند: نام، سن، شماره ی شناسایی و غیره.

مرورگر این اطلاعات را در صورت نیاز در آینده بر روی سیستم ذخیره می کند.

دیگر بار که مرورگر درخواستی را به web server می فرستد، همان اطلاعات cookie را به سرویس هنده {server} ارسال می کند و server هم از این اطلاعات برای شناسایی کاربر استفاده می کند.

این فصل به شما نحوه ی انتخاب کردن، دست یافتن و پاک کردن cookie ها را آموزش می دهد.

تشریح ساختار cookie

cookie ها را باید در header {هدر} http معین و تنظیم کرد. (گر چه javascript همچنان می تواند cookie را مستقیم روی خود مرورگر تنظیم کرده و قرار دهد.) یک PHP script ای که cookie را تنظیم می کند ممکن است header هایی بفرستد به صورت زیر

HTTP/1. 1 200 OK‎

Date: Fri، ‏‎ ۰۴ Feb 2000 21:03:38 GMT‎

Server: Apache/1. 3. 9 (UNIX) PHP/4. 0b3‎

Set-Cookie: name=xyz; expires=Friday، ‏‎ ۰۴-Feb-07 22:03:38 GMT; ‎

                 path=/; domain=tutorialspoint. com

Connection: close

Content-Type: text/html

همان طوری که مشاهده می کنید، هِدِر انتخاب شده توسط cookie دربردارنده ی یک جفت اسم، مقدار {name، value}، تاریخ GMT {تاریخ مطابق با زمان گرینویچ}، یک مسیر و دامنه است. name و value با آدرس URL کدگذاری می شوند. expire یک فرمان است که به مرورگر دستور می دهد تا cookie را پس از گذشت زمان و تاریخ معین شده فراموش کند{از حافظه ی مرورگر پاک کند}.

اگر مرورگر را طوری تنظیم کرده باشید که cookie ها را ذخیره کند، مرورگر این اطلاعات را تا تاریخ انقضا، ذخیره نگه می دارد. اگر کاربر مرورگر را به صفحه ای آدرس دهی کند که با مسیر و دامنه cookie مطابقت داشته باشد، cookie را دوباره به server می فرستد. هِدِرهای مرورگر ممکن است به این صورت باشد.

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[] ، که اسم ها و مقادیرcookie را دارد، به cookie ها دسترسی پیدا می کند. باید برای دست یافتن به cookie بالا از این $HTTP_COOKIE_VARS[“name”]. استفاده کنید.

cookie انتخاب کردن با PHP

PHP برای انتخاب کردن cookie از تابع setcookie() بهره می گیرد. این تابع به ۶ تا آرگومان نیاز دارد و باید پیش از tag فراخوانی شود. برای هرcookie ، این تابع باید جداگانه فراخوانی شود.

setcookie(name، ‏‎ value، ‏‎ expire، ‏‎ path، ‏‎ domain، ‏‎ security);‎

تمام جزئیات آرگومانها در زیر بیان شده اند.

name – این آیتم، cookie را اسم گذاری کرده و در متغیر محیطی که HTTP_COOKIE_VARS خوانده می شود، ذخیره می گردد. این متغیر زمانی که می خواهید به cookie دسترسی پیدا کنید، مورد استفاده قرار می گیرد.

value – این آیتم ارزش متغیر نام گذاری {named variable} شده را تعیین می کند و همان content {محتوا} ای است که شما می خواهید ذخیره کنید.

Expiry – این آیتم زمان آینده را به ثانیه از تاریخ ۰۰:۰۰:۰۰ GMT on 1st Jan 1970 تعیین می کند. بعد از این تاریخ معین  cookieدیگر قابل دسترس نیست. اگر این parameter تنظیم و انتخاب نشده باشد، cookie بلافاصله پس از بسته شدن مرورگر، به صورت خودکار منقضی می شود.

path- این آیتم دایرکتوری هایی که cookie برای آن ها شناس و معتبر است را مشخص می کند. یک علامت ساده ی (/) به cookie اجازه می دهد که برای همه ی داریکتوری ها شناس شود.

Domain- از این ویژگی برای مشخص کردن اسم دامین (دامنه) در دامین های (دامنه) بسیار بزرگ می توان کمک گرفت. این آیتم باید حداقل دارای دو دوره ی تناوب باشد تا معتبر شناخته شود. تمامی cookie ها فقط برای میزبان و دامینی که آن را به وجود آورده شناس و معتبر اند.

security – این گزینه حتماً باید روی ۱ تنظیم شود تا ما مطلع شویم که cookie را فقط باید با HTTPS و مطمئن ارسال کنیم، در غیر این صورت بر روی ۰ تنظیم شده که یعنی می توانیم cookie را با HTTP معمولی بفرستیم.

مثال زیر دو cookie، age و name را که پس از گذشت یک ساعت باطل {expire} می شود ساخته و در زیر نمایش می دهد.

<?php‎

‎   setcookie(“name”‎، ‏‎ “John Watkin”‎، ‏‎ time()+3600‎، ‏‎ “/”‎، ‏‎””‎، ‏‎ ۰);‎

‎   setcookie(“age”‎، ‏‎ “۳۶”‎، ‏‎ time()+3600‎، ‏‎ “/”‎، ‏‎ “”‎، ‏‎ ۰);‎

‎?> 

<html>

<head>

   <title>Setting Cookies with PHP</title>

</head>

<body>

   <?php echo “Set Cookies”?>

</body>

</html>

دستیابی به cookie با PHP

PHP راه های مختلفی برای دستیابی به cookie در اختیار شما قرار می هد. آسان ترین راه انتخاب یکی از این دو متغیر $_COOKIE یا  $_HTTP_COOKIE_VARSاست. مثال زیر به راحتی به تمام cookie های بالا دسترسی پیدا می کند.

<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[“name”].  “<br />”;‎

‎   ?>

</body>

</html>

شما می توانید با تابع isset() بررسی کنید که آیا cookie انتخاب شده یا نه.

<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>

پاک کردن cookie با PHP

برای پاک کردن cookie باید setcookie() را با آرگومان  name فراخوانی کنید، ولی این پروسه همیشه عمل نمی کند و صد در صد قابل اطمینان نیست.

امن ترین و قابل اطمینان ترین روش استفاده از تاریخی است که موعدَش گذشته باشد.

 

<?php‎

‎ setcookie( “name”‎، ‏‎ “”‎، ‏‎ time()- 60‎، ‏‎ “/”‎، ‏‎””‎، ‏‎ ۰);‎

‎ setcookie( “age”‎، ‏‎ “”‎، ‏‎ time()- 60‎، ‏‎ “/”‎، ‏‎””‎، ‏‎ ۰);‎

‎?>

<html>

<head>

   <title>Deleting Cookies with PHP</title>

</head>

<body>

   <?php echo “Deleted Cookies” ?>

</body>

</html>