کوکی ها فایل های کوچکی هستند که توسط سرور ساخته و بر روی کامپیوتر کاربر ذخیره می شوند ، کوکی ها اساسا برای دخیره اطلاعات کمی در مورد همه چیز استفاده می شوند ، و زمانی که کاربر برای دفعه بعد وبسایت را مشاهده می کند ، اطلاعات ذخیره شده در کوکی ها بازخوانی و برای اهداف مختلف استفاده می شوند. کار با کوکی ها در PHP بسیار آسان است و معمولا با یک تابع تمامی کار های مربوط به کوکی را میشه پیاده کرد.
تفاوت اصلی کوکی و session در این است که کوکی ها در کامپیوتر کاربر ذخیره می شود اما session در سرور ذخیره می شود. کوکی ها را می توان به صورت دستی حذف کرد که این کار از نظرامنیتی امری درست نیست.
چرا ما از کوکی ها استفاده می کنیم ؟
در یک فایل کوکی می توان اطلاعات و تنظیمات کاربر را در ۴۰۰۰ کاراکترذخیره سازی کرد. برخی از کاربردهای کوکی در زیر بیان شده است :
- برخی از وبسایت ها صفحات سفارشی و نتایج مختلفی متناسب با هر کاربر ارائه می دهند. این اطلاعات را می توان از داده های ذخیره شده در کوکی به دست آورد..
- برخی از وبسایت ها از کوکی ها برای ورود کاربران به صورت خودکار به وبسایت استفاده می کنند. با ذخیره اطلاعات کاربر در کوکی می توانند آنهارا بطور خودکار اعتبار سنجی کنند و در زمان کاربر برای ورود صرفه جویی کنند.
- سایت های آماری از کوکی ها برای پیگیری کاربران خود استفاده می کنند. با استفاده از کوکی یک کاربر بیش از یک بار در وبسایت مورد شمارش قرار نمی گیرد و آمار کاربران را به صورت منحصر به فرد می توان به دست آورد.
امنیت کوکی ها :
عملا استفاده از کوکی ها امنیت چندانی ندارد . یک کوکی تنطیم شده توسط وبسایت خاصی قابل دسترسی یا چک شدن توسط وبسایت دیگری نیست. اما از آنجا که کوکی یک فایل متنی است قابل خواندن در کامپیوتری است که ذخیره شده است.
اگر وبسایت از کوکی برای ذخیره کلمه عبور استفاده کند این کلمه عبور قابل خواندن است که یک تهدید برای هک شدن می توان در نظر گرفت. اما اگر همان پسورد را با استفاده از روش هایی مانند hash کد گذاری کنیم به نسبت قبل امنیت آن بالا می رود.
استفاده از کوکی ها
کوکی ها برای اهداف مختلفی مانند :
- ذخیره تنظیمات ظاهر صفحه کاربر (رنگ ، اندازه قلم ، اندازه عناصر صفحه ، قالب و…)
- پیگیری پیشرفت (درصد ، شماره صفحه و…)
- ذخیره نام کاربری یا شماره ها (برای اعتبارسنجی کاربر)
استفاده می شوند . در ادامه می خواهیم کار با کوکی ها در PHP را یاد بگیریم.
ست کردن کوکی
می توانیم یک کوکی بر روی کامپیوتر کاربر با استفاده از تابع setcookie() در PHP بسازیم . این تابع ۳ پارامتر ورودی به طور معمول می گیرید که شامل اسم کوکی ، مقدار و تاریخ انقضا است .
1 2 |
$cookie_val = 'Chrome'; //variable setcookie("browser", $cookie_val, time()+3600); //cookie name, value & time (1 hour) |
اگر این کد را اجرا کنیم ، یک کوکی به اسم browser با مقدار Chrome بر روی کامپیوتر کاربر می سازد ، و این کوکی بعد از یک ساعت منقضی خواهد شد .میتئانیم کوکی هایی با مقادیر مختلف و تاریخ انقضا های متفاوت ایجاد کنیم که بعدا آن ها را برای اهداف مختلف بازیابی کنیم.
یک کوکی می تواند با پارامتر های مختلف دیگری هم ساخته شود، که شامل مسیر ، دامنه ، secure و httponly باشد.
1 2 |
$cookie_val = 'Chrome'; //variable setcookie("browser", $cookie_val, time()+3600, '/', 'sanwebe.com', true, true); |
اگر برای مسیر(path) مقدار “/” را ست کنیم ، کوکی در تمامی قسمت های آن دامنه در دسترس خواهد بود ، ولی اگر به اینصورت مثلا “/myfolder” ست کنید فقط در این فولدر و زیر شاخه های آن در دسترس خواهد بود.
دریافت مقادیر کوکی
یکبار که کوکی ساخته شد با متغیر سراسری $_COOKIE می توانیم به آن کوکی و مقادریرش دسترسی داشته باشیم.
1 |
echo 'Your browser is ' . $_COOKIE['browser']; |
کد بالا یک خطا چاپ می کند ، اگر کوکی به اسم browser وجود نداشته باشد . پس برای جلوگیری از این خطاها اول از همه چک می کنیم که آیا همچنین کوکی وجود دارد یا نه.
1 2 3 4 |
if(isset($_COOKIE['browser'])) //check cookie exist { echo 'Your browser is ' . $_COOKIE['browser']; } |
یا راه کوتاه تر :
1 2 |
$cookie_value = (isset($_COOKIE['browser']))? $_COOKIE['browser'] :'no cookie'; echo $cookie_value ; |
کوکی ذخیره شده در مرورگر کاربر تا زمانی که زمان انقضا تمام نشده باشد یا کاربر آن را دستی پاک نکند ، ادامه خواهد داشت . اما اگر قصد دارید که کوکی را قبل از تمام شدن تاریخ انقضا پاک کنید ، کافیست یک خط دیگر به اسکریپت خود اضافه کنید .
حذف کوکی
برای حذف کوکی کافیست که یک زمان منقضی شده به کوکی خود اضافه کنیم
1 |
setcookie("browser", "", time()-3600); //expiration time set to one hour ago |
زمانی که این کد اجرا شود ، زمان انقضا کوکی کاربر جایگزین مقدار جدید خواهد شد و کوکی کاربر بلافاصله از مرورگر کاربر حذف می شود.
سلام مهندس شفیعی خسته نباشید
وقتی از کوکی استفاده میکنیم باید صفحه رو رفرش کنیم تا بتونیم به مقدارش دسترسی پیدا کنیم چیکار کنیم وقتی set شد نیازی به رفرش نباشه و همون لحظه به مقدارش دسترسی داشته باشیم
سلام. ممنون.
باید رفرش بشه تا بتونید بهش دسترسی پیدا کنید
سلام ، مشکل من این است که وقتی از مرورگر خارج می شوم یا ادرس سایت رو دوباره می رم کوکی ها مقدارشان deleted می شود؟
سلام. باید یه زمان به ثانیه به کوکی بدید تا حذف نشه
حل نشد و بازهم در هنگام خروج و ورود حذف می شوند.
با سلام و خسته نباشید خدمت شما اگر بخواهیم یک مقدار در یک کوکی را عوض کنیم باید چه کار کنیم ؟
سلام ممنون.
به اینصورت
setcookie(“$name”, $cookie_val, time()+3600, ‘/’)
از اول باید تایم و نام و مقدار رو وارد کنید و حتما برای آرگومان چهارم همانند مثال بالا / قرار بدید
با سلام ممنون درست شد واقعا سایتتون عالیه بهترین سایت php ایرانی که من دیدم
خواهش می کنم.
خوشحالیم که مفید واقع شده
موفق باشید.
سلام
موقع اجرا این ارور رو داد :
Warning: Cannot modify header information – headers already sent by (output started at /home/safedeal/public_html/index.php:1) in /home/safedeal/public_html/index.php on line 6
خط اول فقط کد ?>php هست و خط ۶ هم کد ایجاد کوکی.
توی یک سایت انجام میشه ولی توی یک سایت دیگه هیچ تغییری نمی کنه.
مشکل به نظرتون از کجا میتونه باشه؟
نکته : توی هر دو سایت بعد لاگین کوکی خود php هست.
سلام. برای حل مشکل این دو آموزش را مطالعه کنید :
Output Buffering در PHP
خطاها در PHP
موفق باشید.
از بافرها استفاده کردم و در لیست خطاها هم نبود.
سورس من : http://8upload.ir/uploads/f91654468.png
ممنون میشم یک بررسی کنید.
مربوط به محیط اجراتون هست که باید مواردی رو امتحان کنید.
فایلتون باید utf8 without boom باشه.
قبل setcookie نباید هیچ خروجی وجود داشته باشه.
قبل