کار با کوکی (Cookies) در PHP

کار با کوکی (Cookies) در PHP

کار با کوکی (Cookies) در PHP – کوکی نقش مهمی در تعامل با کاربر ایفا می کنند ، داده های سبد خرید ، توکن های ورود کاربر ، اعتبار سنجی کاربر و … با کمک کوکی ها انجام می شود .

البته local storage و session storage ها هم با Cookie تشابه دارند که در این جا در مورد آن بحث نمی کنیم !

به طور کلی کوکی ها به 2 دسته تقسیم می شوند :
1- cookie که دارای یک تاریخ انقضا می باشد
2- session که بدون تاریخ انقضا می باشد و پس از بسته شدن مرورگر پاک می شود ( در حالی که مورد قبلی پس از اتمام تاریخ انقضا پاک می شود )

در این آموزش بیشتر تمرکز مان بر روی مورد اول است .

برای ساخت کوکی می توانیم از تابع setcookie استفاده کنیم که 7 ورودی دارد و 2 ورودی اول اجباری است :

1- نام کوکی
2- مقدار کوکی
3- تاریخ انقضا براساس timestamp پیشفرض (null) – در صورتی که این ورودی داده نشود یا null باشد php آن را به عنوان session در نظر می گیرد
4- در چه مسیری قابل دسترسی باشد . پیشفرض ( / ) یعنی در سرتاسر امکان دسترسی وجود دارد
5- این که در چه دامنه ای قابل دسترسی باشد ( پیشفرض دامنه فعلی ) می توان ساب دامین ها را هم تنظیم کرد .
6- این که کوکی در https فقط قابل دسترسی باشد . ( پیشفرض false )
7- این که فقط زبان های سمت سرور به کوکی دسترسی داشته باشند ( پیشفرض false ) در صورتی که false باشد javascript امکان دسترسی به کوکی ها را خواهد داشت . توصیه می شود رو true تنظیم کنید تا از خطر Stored XSS attack جلوگیری شود .


ساخت cookie

اجباری برای وارد کردن تمامی پارامتر ها نیست 3 ورودی اول کافی است . برای درک بهتر سعی شده تمامی پارامتر ها پر شود .

$expire = time() + 3600 * 3; // 3 hours

setcookie("user_token" , "arman.15478e9x6g" , $expire , "/" , "rpd.ir" , false , true);


خواندن cookie

با استفاده از Super Global به نام COOKIE_$ می توانیم به مقدار کوکی ها دسترسی پیدا کنیم . کافی است نام کوکی را وارد کنید .

echo $_COOKIE['user_token'];


ساخت و خواندن cookie

$expire = time() + 3600 * 3; // 3 hours

if(!isset($_COOKIE['user_token']))
setcookie("user_token" , "arman.15478e9x6g" , $expire , "/" , "rpd.ir" , false , true);
else 
echo $_COOKIE['user_token'];

همچنین از نسخه 7.3.0 از ورودی 2 به بعد می توانیم به صورت آرایه دیگر ورودی ها را پاس کنیم + امکان استفاده از samesite برای جلوگیری از باگ csrf و همچنین بلاک دسترسی های third-party :

setcookie("user_token" , "arman.15478e9x6g" , [
"path" => "/",
"expires" => $expire,
"domain" => "rpd.ir",
"secure" => false,
"httponly" => true,
"samesite" => "Strict"
]);


بروزرسانی cookie

از همان تابع setcookie می توانیم استفاده کنیم :

setcookie("user_token" , "zzzzzzzzzzz" , $expire , "/" , "rpd.ir" , true , true);


حذف cookie

برای حذف با تابع setcookie ورودی سوم یعنی تاریخ انقضا را زمان گذشته می دهیم .

setcookie("user_token" , null , time() - 1);


کار با کوکی (Cookies) در PHP

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us