امروز : یکشنبه, 21 آذر 1395
اموزش Codeigniter جلسه سیزدهم مدیریت کوکی ها
3/50 امتیاز از 12 رای
 کسب و کار  |     |   12

اگر سری آموزشی پی‌اچ‌پی را در دنبال کرده باشید، به یاد دارید که در مورد کوکی‌ها صحبت کرده بودیم. کوکی‌ها در واقع داده‌های کوچکی هستند که از سرور ارسال و در رایانه‌ی کاربر ذخیره می‌شوند. در فریم‌ورک Codeigniter می‌توان با استفاده از هلپر Cookie Helper کوکی‌ها را به آسانی مدیریت کرد. در ادامه‌ی مطلب با همراه باشید تا شما را با روش مدیریت استفاده از کوکی‌ها در فریم‌ورک Codeigniter آشنا کنیم.معمولا از کوکی‌ها برای ذخیره‌ی اطلاعات کاربرانی که لاگین شده‌اند یا ذخیره‌ی تنظیماتی که هر کاربر روی سایت اعمال می‌کند استفاده می‌کنیم.مثلا فرض کنید می‌خواهیم در سایت ما یک ویژگی وجود داشته باشد که هر شخصی بتواند با استفاده از آن، رنگ پس زمینه‌ی سایت را مطابق میل خود تغییر دهد. برای این منظور کافی است تا رنگ تعیین شده برای هر کاربر را در یک کوکی قرار داده و انقضای آن را نیز حدود یک سال تعریف کنیم. سپس رنگ تعیین شده توسط کاربر را در این کوکی ذخیره می‌کنیم. سپس با هر بار مراجعه کاربر ابتدا بررسی می‌کنیم که کوکی تعیین رنگ پس زمینه‌ی سایت برای وی ایجاد شده یا نه و اگر ایجاد شده بود، مقدار رنگ تعیین شده را از کوکی گرفته و با استفاده از کد‌های اچ‌تی‌ام‌ال و سی‌اس‌اس، پس زمینه‌ی سایت را مطابق با رنگ اعلام شده توسط کاربر تغییر می‌دهیم. در این حالت تا زمانی که کوکی توسط کاربر به صورت دستی از مرورگر وی پاک نشده یا زمان انقضای آن فرا نرسیده باشد، همین فرآیند برای تغییر رنگ پس زمینه برای هر کاربر تکرار می‌شود.به همین ترتیب می‌توان از کوکی‌ها برای ذخیره‌ی اطلاعات لاگین شدن کاربر، تعیین اندازه یا فونت مورد نظر کاربر و ... استفاده کرد.در جدول زیر می‌توانید روش استفاده از این ویژگی را در فریم‌ورک مورد اشاره مشاهده کنید.

دستور اصلی

set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[,$path = '/'[, $prefix = ''[, $secure = FALSE[, $httponly = FALSE]]]]]]]])

پارامترها

  • $name (mixed) − نام کوکی یا آرایه‌ای که شامل لیستی از تمامی پارامترهای موجود برای این متد باشد

  • $value (string) − مقدار مورد نظر برای ذخیره سازی در کوکی

  • $expire (int) − زمان انقضای کوکی بر حسب ثانیه

  • $domain (string) − domain.com دامین کوکی مثل

  • $path (string) − مسیر کوکی

  • $prefix (string) − پیشوند نام کوکی

  • $secure (bool) − تعیین اینکه کوکی فقط از طریق پروتکل امن ارسال شود یا نه

  • $httponly (bool) − تعیین اینکه کوکی از جاوا اسکریپت مخفی باشد یا نه

نوع مقدار بازگشتی

تهی (void)
در تابع ()set_cookie می‌توانیم تمامی مقادیر مورد نظر را با استفاده از دو روش تعیین کنیم. روش اول که در آن فقط می‌توانیم آرایه را به این متد ارسال کنیم و روش دوم که می‌توان ورودی‌ها را به صورت مجزا در قالب پارامترهای جداگانه به تابع مورد اشاره بفرستیم. اما تابع دیگری که برای مدیریت کوکی‌ها در Codeigniter به کار می‌بریم ()get_cookie است. در جدول زیر روش استفاده از این متد توضیح داده شده است.

دستور اصلی

get_cookie($index[, $xss_clean = NULL]])

پارامترها

  • $index (string) − نام کوکی مورد نظر

  • $xss_clean (bool) − تعیین اینکه فیلترینگ ایکس‌اس‌اس انجام شود یا نه

مقدر بازگشتی

اگر کوکی مورد نظر وجود داشته باشد، مقدار ذخیره شده در آن را بر می‌گرداند و در غیر این صورت خروجی این تابع NULL است.

نوع مقدار بازگشتی

چندگانه
از تابع ()get_cookie به منظور دریافت داده‌هایی که با تابع ()set_cookie در یک کوکی ذخیره شده است، استفاده می‌کنیم.در برخی مواقع شرایط به گونه‌ای است که نیاز به حذف کوکی ایجاد شده خواهیم داشت. در این حالت باید از تابع زیر استفاده کنیم که در جدول به صورت کامل توضیح داده شده است.

دستور اصلی

delete_cookie($name[, $domain = ''[, $path = '/'[, $prefix = '']]]])

پارامترها

  • $name (string) − نام کوکی مورد نظر

  • $domain (string) − domain.com دامین کوکی مثل

  • $path (string) − مسیر کوکی

  • $prefix (string) − پیشوند نام کوکی

نوع مقدار بازگشتی

تهی (void)
همانطور که اشاره کردیم به منظور حذف کوکی‌ها از تابع ()delete_cookie استفاده می‌کنیم.

مثال

ابتدا نرم‌افزار سرور مجازی Xampp را باز کنید و سپس سرور آپاچی و مای‌اس‌کیو‌ال را در حال اجرا قرار دهید. حال طبق آموزش‌هایی که در جلسات اولیه توضیح داده بودیم، یک پروژه جدید Codeigniter ایجاد کنید. ما این پروژه را در پوشه‌ی codei-cookie که در پوشه‌ی htdocs نرم‌افزار زمپ ساخته‌ایم، ایجاد کرده‌ایم. حال در مسیر application/controller باید یک کنترلر جدید ایجاد کنیم. بدین منظور در مسیر یاد شده یک فایل جدید به نام Cookie_controller.php ایجاد کرده و سپس کد زیر را در آن قرار دهید.
<>php class Cookie_controller extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper(array('cookie', 'url')); } public function index() { set_cookie('cookie_name','cookie_value','3600'); $this->load->view('Cookie_view'); } public function display_cookie() { echo get_cookie('cookie_name'); $this->load->view('Cookie_view'); } public function deletecookie() { delete_cookie('cookie_name'); redirect('cookie/display'); } } ?>
در کنترلر بالا ابتدا در تابع کانسترکتور، با استفاده از کد زیر:
parent::__construct(); $this->load->helper(array('cookie', 'url')); 
هلپر کوکی‌ها را در اپلیکیشن خود لود کرده‌ایم. سپس یک تابع به اسم index ایجاد می‌کنیم و با استفاده از کد:
set_cookie('cookie_name','cookie_value','3600'); $this->load->view('Cookie_view'); 
ابتدا کوکی جدیدی به نام cookie_name ایجاد می‌کنیم که مقدار آن cookie_value و زمان انقضای آن نیز یک ساعت یا ۳۶۰۰ ثانیه است. سپس در خط دوم کد بالا که مربوط به تابع ایندکس است، فایل ویو مورد نظرمان را لود می‌کنیم.در کنترلری که ایجاد کرده‌ایم یک تابع به نام display_cookie به منظور نمایش مقدار ذخیره شده در کوکی ایجاد کرده‌‌ایم. با استفاده از کد:
echo get_cookie('cookie_name'); $this->load->view('Cookie_view');
همانطور که می‌بینید ابتدا مقدار کوکی cookie_name را با دستور اکو چاپ کرده و سپس فایل ویو مورد نظر را بارگذاری می‌کنیم.در نهایت با استفاده از کد زیر که مربوط به تابع delete_cookie است اقدام به حذف کوکی مورد نظر کرده‌ایم.
delete_cookie('cookie_name'); redirect('cookie/display'); 
کد بالا ابتدا کوکی cookie_name را حذف کرده و سپس در خط دوم باعث می‌شود تا کاربر به مسیر cookie/display منتقل شود.حال باید فایل ویو یا همان ظاهر مورد نظر این پروژه را بسازیم. بدین منظور در مسیر application/views یک فایل جدید به نام Cookie_view.php ایجاد کرده و سپس کد زیر را در آن قرار داده و سپس ذخیره کنید.
 <> lang = "en">  <> charset = "utf-8"> CodeIgniter View Example  <> href = 'display'>Click Here to view the cookie.
<> href = 'delete'>Click Here to delete the cookie.

برچسب ها :  

نظر خود را به اشتراک بگذارید