جلسه ها پس از بستن سایت از بین می روند اما می توان مقادیری را ذخیره کرد که اگر سایت دوباره توسط کاربر باز شد آن مقادیر خوانده شود. مثلا هنگامی که شما در سایتی به عنوان کاربر وارد می شوید (اگر سایت این قابلیت را داشته باشد) دفعه ی بعد که به سایت وارد می شوید نیازی به ورود دوباره نیست و سایت به صورت خودکار شما را به عنوان یک کاربر می شناسد. این عمل به وسیله کوکی ها انجام می شود.
چگونه در php سشن (session) ایجاد کنیم؟
ایجاد کوکی ها بوسیله یک تابع به نام setcookie() انجام می پذیرد که چندین پارامتر دارد. این تابع نیز مانند تابع session_start() در بخش جلسه ها باید قبل از کدهای html قرار بگیرد. شکل کلی استفاده از آن به شکل زیر است:
setcookie(name, value, expire);
هرکوکی دارای یک نام است که توسط پارامتر name مشخص می شود. پارامتر value مقدار کوکی را و پارامتر expire زمان نابود شدن این کوکی را مشخص می کند. زمانی که تاریخ یا زمان کوکی که توسط پارامتر expire تنظیم می شود به پایان برسد دیگر این کوکی توسط برنامه شناسایی نمی شود زیرا کوکی به طور کامل حذف شده و قابل استفاده نیست. این پارامتر برحسب ثانبه مقادیری را دریافت می کند.
مثال:
1 2 3 |
<?php setcookie("userName", "exampleName", time() + 60); ?> |
این کد یک کوکی با نام username و مقدار exampleName را به شکلی ذخیره می کند که پس از یک دقیقه این کوکی از بین می رود. دقت کنید که برای مشخص کردن پارامتر expire از تابع time() استفاده کردیم. این تابع زمان فعلی را برمی گرداند که هرمقدار که مورد نیاز است به این تابع افزوده می شود. مقداری که به این تابع افزوده می شود باید برحسب ثانیه باشد. مثلا اگر می خواهیم کوکی ما برای یک ماه پایدار باشد باید مقدار time() + 60 * 60 * 24 * 30 را وارد کنیم.
گرفتن مقادیر کوکی ها در php
برای واکشی مقادیر کوکی های ثبت شده از متغیر $_COOKIE[] به صورت زیر استفاده می شود:
$_COOKIE[cookie_name];
که به جای cookie_name نام کوکی ثبت شده قرار می گیرد و مقدار آن کوکی برگردانده می شود.
مثال:
مقدار کوکی که در مثال پیش ایجاد شد را به شکل زیر واکشی می کنیم:
1 2 3 4 |
<?php setcookie("userName", "exampleName", time() + 30); echo $_COOKIE['userName']; ?> |
خروجی:

اما اگر این کوکی از بین برود (در این مثال پس از 1 دقیقه) ممکن است خطایی به شکل زیر به نمایش درآید:

به همین دلیل می توانیم وجود این کوکی را ابتدا بررسی کنیم و سپس عملیات دیگر را بر روی آن انجام دهیم.
یعنی می توان مثال پیش را به صورت زیر گسترش داد:
1 2 3 4 5 6 |
<?php if(isset($_COOKIE['userName'])) echo "Username is '".$_COOKIE['userName']."'"; else echo "No cookie found!!!"; ?> |
همانطور که مشاهده می کنید وجود کوکی مورد نظر را با استفاده از تابع isset() بررسی کردیم. خروجی این کد در صورت وجود کوکی به شکل زیر:

و در صورت عدم وجود به صورت زیر خواهد بود:

حذف کوکی (cookie) ها در php
برای از بین بردن کوکی دو راه وجود دارد. راه اول استفاده از تابع unset() می باشد که در قسمت های قبل بررسی شد.
اما راه دیگر و بهتر این است که پارامتر expire را به زمانی پیش از بین نسبت دهیم و به جای این که با تابع time() جمع شود عددی را از این تابع کم کنیم.
به مثال زیر توجه کنید. در این مثال از روش اول استفاده شده است:
1 2 3 4 5 6 |
setcookie("userName", "exampleName", time() + 30); unset($_COOKIE['userName']); if(isset($_COOKIE['userName'])) echo "Username is '".$_COOKIE['userName']."'"; else echo "No cookie found!!!"; |
کد زیر نیز از روش دوم استفاده کرده است:
1 2 3 4 5 6 |
setcookie("userName", "exampleName", time() + 30); setcookie("userName", "exampleName", time() - 1); if(isset($_COOKIE['userName'])) echo "Username is '".$_COOKIE['userName']."'"; else echo "No cookie found!!!"; |
خروجی هر دو کد به شکل زیر می باشد: