سلام کاربران عزیز ، وقتتون بخیر و شادی. با اموزشی دیگر در زمینه کوکی ها در خدمت شما هستیم ، امیدوارم که این مطلب برای شما مفید واقع شود.
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>