آموزش پیشرفته PHP – کوکی ها
سلام
با یک آموزش دیگه از سری آموزش های پیشرفته PHP در خدمتتون هستیم، در جلسه ی قبل آپلود فایل را یاد گرفتیم؛ در این جلسه می خواهیم بپردازیم به یک مساله ی جذاب و البته بسیار کاربردی به نام Cookie(کوکی)، در ادامه همراه بپرسم باشید.
کوکی چیست؟
کوکی شامل یک سری اطلاعات است که به صورت فایل متنی از طرف سرور روی سیستم کاربر ذخیره میشود، وقتی به یک وب سایت مراجعه میکنید و نام کاربری و رمز عبور خود را وارد میکنید، این اطلاعات در یک فایل متنی که همان کوکی است از طرف سرور روی سیستم شما ذخیره میشود، هنگام مراجعه ی بعدی به وب سایت، سرور برای شناسایی شما از کوکی استفاده میکند.
ایجاد کوکی با PHP
برای تعریف یا ایجاد یک کوکی در PHP از تابع ()setcookie به صورت زیر استفاده میکنیم.
۱ |
setcookie(name, value, expire, path, domain, secure, httponly); |
در تابع ()setcookie فقط پارامتر name ضروری هست و مابقی پارامترها اختیاری هستند.
توضیح پارامترها:
- name: نام کوکی
- value: مقدار کوکی(مانند نام کاربری و رمز عبور)
- expire: مدت زمان انقضا(بر حسب ثانیه)
- path: مسیری در وب سایت که کوکی در آن معتبر است(برای مثال میتوانید کوکی را فقط در یک مسیر خاصی از وب سایت تعریف کنید)
- domain: وب سایتی که کوکی برای آن معتبر است
- secure: این پارامتر تعیین میکند که کوکی در حالت امن و در پروتکل https باشد یا خیر(مقدار true و false میگیرد)
- httponly: این پاارمتر نیز تعیین میکند که کوکی در پروتکل http باشد یا خیر(مقدار true و false میگیرد)
ایجاد و بازیابی کوکی در PHP
قطعه کد زیر یک کوکی به نام user با مقدار beporsam ایجاد میکند، این کوکی بعد از ۳۰ روز منقضی میشود(تا ۳۰ روز در سیستم کاربر ذخیره میشود)، مقدار / را که به کار بردیم به این معنی است که کوکی در کل وب سایت معتبر است(اگر نخواهیم که در کل وب سایت معتبر باشد، میتوانید دایرکتوری خود را انتخاب کنید).
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ |
<?php $cookie_name = "user"; $cookie_value = "beporsam"; setcookie($cookie_name, $cookie_value, time() + (۸۶۴۰۰ * ۳۰), "/"); // ۸۶۴۰۰ = ۱ day ?> <html> <body> <?php if(!isset($_COOKIE[$cookie_name])) { echo "Cookie named '" . $cookie_name . "' is not set!"; } else { echo "Cookie '" . $cookie_name . "' is set!<br>"; echo "Value is: " . $_COOKIE[$cookie_name]; } ?> </body> </html> |
همیشه تابع ()setcookie را قبل از تگ <html> نوشته میشود.
مقدار cookie به طور خودکار هنگام ارسال کد(URLencoding) می شود و موقع دریافت رمزگشایی می شود (برای پیشگیری از رمزگذاری٫ از ()setrawcookie استفاده کنید.
تعیین زمان کوکی در PHP
در قطعه کد بالا که مثالی از ساخت کوکی زدیم، زمان را اینگونه محاسبه کردیم:
۱ |
setcookie($cookie_name, $cookie_value, time() + (۸۶۴۰۰ * ۳۰), "/"); // ۸۶۴۰۰ = ۱ day |
که ۸۶۴۰۰ ثانیه برابر با ۲۴ ساعت یا یک روز است، که این یک روز را ضرب در ۳۰ کردیم تا بشود یک ماه.
زمان را به صورت دیگری نیز میتوانیم تعیین کنیم:
۱ |
setcookie($cookie_name, $cookie_value, time() + ۳۶۰۰, "/"); // ۸۶۴۰۰ = ۱ hour |
کوکی بالا یک ساعت فعال است.
۱ |
setcookie($cookie_name, $cookie_value, time()+ (۶۰*۶۰*۲۴*۳۰ ), "/"); // ۱ month |
در مثال بالا زمان انقضا با مقدار “۱ ماه” پر شده است( ۶۰sec * 60 min * 24 hours * 30 days)
زمان کوکی بر حسب ثانیه باید مشخص شود که با توجه به سلیقه ی خودتون می تونید زمان رو مشخص کنید.
تغییر مقدار کوکی در PHP
برای تغییر مقدار یک کوکی، کافیست تا دوباره توسط تابع ()setcookie کوکی را تنظیم کنید:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ |
<?php $cookie_name = "user"; $cookie_value = "fadev"; setcookie($cookie_name, $cookie_value, time() + (۸۶۴۰۰ * ۳۰), "/"); ?> <html> <body> <?php if(!isset($_COOKIE[$cookie_name])) { echo "Cookie named '" . $cookie_name . "' is not set!"; } else { echo "Cookie '" . $cookie_name . "' is set!<br>"; echo "Value is: " . $_COOKIE[$cookie_name]; } ?> </body> </html> |
در قطعه کد بالا مقدار کوکی را از beporsam به fadev تغییر دادیم.
حذف کوکی در PHP
برای حذف کوکی کافیست تا تاریخ انقضای آن را به گذشته تغییر دهیم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ |
<?php setcookie("user", "", time() - ۳۶۰۰); ?> <html> <body> <?php echo "Cookie 'user' is deleted."; ?> </body> </html> |
در قطعه کد بالا کوکی user را با دادن تاریخ انقضای گذشته، حذف کردیم.
بررسی فعال بودن کوکی در PHP
توسط قطعه کد زیر می توانیم بررسی کنیم که آیا کوکی فعال است یا خیر. ابتدا یک کوکی توسط تابع ()setcookie میسازیم و سپس توسط تابع count مقدار کوکی را میشماریم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ |
<?php setcookie("test_cookie", "test", time() + ۳۶۰۰, '/'); ?> <html> <body> <?php if(count($_COOKIE) > ۰) { echo "Cookies are enabled."; } else { echo "Cookies are disabled."; } ?> </body> </html> |
این قسمت از آموزش نیز به پایان رسید، اگر مشکلی در رابطه با آموزش بالا داشتید، در بخش پرسش و پاسخ سایت بپرسید.
موفق باشید
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید