کار با کوکی (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
ارسال نظر