تصور کنید هنگامی که وارد یک وبسایت چند زبانه می شوید و از بین زبان های پیشنهادی زبان فارسی را انتخاب می کنید. سپس در زمان های آینده هنگامی که مجددا به وبسایت یاد شده مراجعه میکنید متوجه میشوید که مرورگر شما را به نوعی شناسایی می کند و زبان فارسی را از پیش انتخاب می کند. مثالی دیگر: فرض کنید در وبسایتی از قبل ثبت نام کرده اید و حال لاگین می کنید و دکمه " مرابه خاطر بسپار" را تیک می زنید. در مراجعات بعدی متوجه می شوید که مرورگر شما را به صورت خودکار لاگین کرده و نیازی به وارد کردن نام کاربری یا رمز عبور ندارید. تمام موارد مشابه با این مثال ها توسط کوکی ها در برنامه نویسی پیاده سازی می شوند.
کوکی در انگلیسی به معنای کلوچه یا شیرینی و در برنامه نویسی به اطلاعاتی گفته می شود که از پیش روی کامپیوتر کاربر داخل یک فایل متنی ذخیره شده و در مواقع مورد نیاز در قالب کلوچه های اطلاعاتی به سمت سرور فرستاده می شود.
از آنجا که پروتکل HTTP پروتکلی بدون وضعیت هست و در درخواست های بعدی، طرفین قادر به شناسایی یکدیگر نیستند، مکانیزمی به نام کوکی روی این پروتکل اضافه شد.
یکی از تفاوت های اصلی کوکی ها و session ها در همین مورد است که کوکی ها در کامپیوتر کاربر ذخیره می شوند ولی session ها در سرور ذخیره می شوند.
پس روند کار به این صورت است که ابتدا و برای اولین بار سرور اطلاعات مربوط به کوکی را به مرورگر ارسال می کند و سپس مروگر همان اطلاعات را گرفته و ذخیره می کند. بعد از آن هرگاه از همان سایت درخواستی به سرور ارسال شد مرورگر کوکی ذخیره شده را به سرور ارسال و سرور با توجه به پارامترهایی مانند مسیر ، زمان انقضا و ... کوکی را اعتبار سنجی می کند.
بنابراین روند ذکر شده در بالا به صورت مختصر این چنین بیان می شود:
کوکی ها در php توسط تابع setcookie تولید می شوند. این تابع 6 پارامتر به شرح زیر می پذیرد :
setcookie(name, value, expire, path, domain, security);
توجه داشته باشید که این تابع حتما بایستی قبل از تگ <html> قرار بگیرد. از میان پارامترهای این تابع فقط پارامتر name اجباری می باشد و بقیه پارامترها به صورت اختیاری می باشند.
اگر بخواهیم مختصر توضیحی درباره پارامترهای ذکر شده داشته باشیم به صورت زیر تعریف می کنیم :
در مثال زیر 3 کوکی برای مشخصاتی چون نام ، محل تولد و شغل یک فرد تولید می کنیم .
<?php
setcookie("name", "Alireza Htaminia", time()+3600, "/","", 0);
setcookie("city", "Tehran", time()+3600, "/", "", 0);
setcookie("Job", "Web Developers", time()+3600, "/", "", 0);
?>
<html>
<head>
<title>PHP Cookies</title>
</head>
<body>
<?php echo "Set Cookies"?>
</body>
</html>
راحت ترین راه برای دسترسی به کوکی تولید شده در php استفاده از دو متغیر $_COOKIE یا $HTTP_COOKIE_VARS می باشد.
<?php
echo $_COOKIE["name"]. "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["name"]. "<br />";
echo $_COOKIE["city"] . "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["city"] . "<br />";
echo $_COOKIE["job"] . "<br />";
/* is equivalent to */
echo $HTTP_COOKIE_VARS["job"] . "<br />";
?>
برای حذف یک کوکی از تابع ()setcookie استفاده می کنیم. این تابع نام کوکی مورد نظر دریافت و آن را حذف می کند. اما گاهی اوقات این پروسه به خوبی عمل نمی کند و نمی توان گفت که این روش روشی مطمئن برای حذف کوکی می باشد. پس چه باید کرد. در اینجا می توانیم توسط همان تابع سازنده کوکی اقدام ه حذف کوکی های ساخته شده کنیم. فقط کافی ست که همان کوکی را بسازیم ولی زمان انقضای آن را به تاریخ قبل از شروع ببریم. به این صورت:
<?php
setcookie( "name", "", time()- 60, "/","", 0);
setcookie( "city", "", time()- 60, "/","", 0);
setcookie( "job", "", time()- 60, "/","", 0);
?>
<html>
<head>
<title>Deleting Cookies with PHP</title>
</head>
<body>
<?php echo "Deleted Cookies" ?>
</body>
</html>
مثال زیر بررسی می کند که کوکی ها فعال شده اند یا نه. ابتدا با استفاده از تابع ()setcookie یک تست کوکی ایجاد می کنیم. سپس آرایه COOKIE_$ را می شماریم:
مثال :
<?php setcookie("test_cookie", "test", time() + 3600, '/'); ?> <html> <body> <?php if(count($_COOKIE) > 0) { echo "کوکی ها فعال هستند."; } else { echo "کوکی ها غیر فعال هستند."; } ?> </body> </html>