آموزش Codeigniter - جلسه سیزدهم: مدیریت کوکی ها
اگر سری آموزشی پیاچپی را در زومیت دنبال کرده باشید، به یاد دارید که در مورد کوکیها صحبت کرده بودیم. کوکیها در واقع دادههای کوچکی هستند که از سرور ارسال و در رایانهی کاربر ذخیره میشوند. در فریمورک Codeigniter میتوان با استفاده از هلپر Cookie Helper کوکیها را به آسانی مدیریت کرد. در ادامهی مطلب با زومیت همراه باشید تا شما را با روش مدیریت استفاده از کوکیها در فریمورک Codeigniter آشنا کنیم.
معمولا از کوکیها برای ذخیرهی اطلاعات کاربرانی که لاگین شدهاند یا ذخیرهی تنظیماتی که هر کاربر روی سایت اعمال میکند استفاده میکنیم.
مثلا فرض کنید میخواهیم در سایت ما یک ویژگی وجود داشته باشد که هر شخصی بتواند با استفاده از آن، رنگ پس زمینهی سایت را مطابق میل خود تغییر دهد. برای این منظور کافی است تا رنگ تعیین شده برای هر کاربر را در یک کوکی قرار داده و انقضای آن را نیز حدود یک سال تعریف کنیم. سپس رنگ تعیین شده توسط کاربر را در این کوکی ذخیره میکنیم. سپس با هر بار مراجعه کاربر ابتدا بررسی میکنیم که کوکی تعیین رنگ پس زمینهی سایت برای وی ایجاد شده یا نه و اگر ایجاد شده بود، مقدار رنگ تعیین شده را از کوکی گرفته و با استفاده از کدهای اچتیامال و سیاساس، پس زمینهی سایت را مطابق با رنگ اعلام شده توسط کاربر تغییر میدهیم. در این حالت تا زمانی که کوکی توسط کاربر به صورت دستی از مرورگر وی پاک نشده یا زمان انقضای آن فرا نرسیده باشد، همین فرآیند برای تغییر رنگ پس زمینه برای هر کاربر تکرار میشود.
به همین ترتیب میتوان از کوکیها برای ذخیرهی اطلاعات لاگین شدن کاربر، تعیین اندازه یا فونت مورد نظر کاربر و ... استفاده کرد.
در جدول زیر میتوانید روش استفاده از این ویژگی را در فریمورک مورد اشاره مشاهده کنید.
اما تابع دیگری که برای مدیریت کوکیها در Codeigniter به کار میبریم ()get_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"> </span><span class="pln">CodeIgniter View Example</span><span class="tag"> href = 'display'>Click Here to view the cookie. href = 'delete'>Click Here to delete the cookie.
همانطور که میبینید کد بالا فقط شامل دو لینک به توابعی است که در فایل کنترلر ایجاد کرده بودیم. یک لینک به منظور نمایش و دیگری به منظور حذف کوکی بکار میروند. البته ما باید برای فریمورک تعیین کنیم که در صورت مراجعه به این دو لینک دقیقا چه توابعی را اجرا کند زیرا مثل سایر پروژهها و به منظور آشنایی بیشتر با فایل routes در این مثال نیز میخواهیم ساختار URL مورد نظر خود را برای دسترسی به بخشهای مختلف پروژه تعریف کنیم.
برای اعمال تغییرات در روتز، که در مسیر application/config/routes.php قرار گرفته، ابتدا این فایل را باز کرده و سپس کد زیر را در انتهای کدهای موجود در آن قرار داده و ذخیره کنید.
$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie"; $route['cookie/delete'] = "Cookie_controller/deletecookie";
در کد بالا ما برای Codeigniter تعریف کردهایم که در صورتی که کاربر به مسیر cookie/ از محل نصب فریمورک (که در اینجا /http://127.0.0.1/code-cookie/index.php است) مراجعه کرد، کنترلری به نام Cookie_controller که در بالا ایجاد کرده بودیم، اجرا شود. همانطور که میدانید در صورت اجرای یک کنترلر، به صورت پیشفرض متد index آن فراخوانی خواهد شد. سپس به همین ترتیب تعیین میکنیم در صورت دسترسی به مسیر cookie/display از محل نصب فریمورک، متد نمایش کوکی کنترلر یعنی Cookie_controller/display_cookie فراخوانی شود. در نهایت این کار را برای دسترسی به مسیر cookie/delete برای اجرای متد Cookie_controller/deletecookie تکرار کردهایم.
اگر تمام این مراحل را به درستی و با دقت انجام داده باشید، با اجرای کد زیر در مرورگر خود، میتوانید پروژه را اجرا کنید:
http://127.0.0.1/codei-cookie/index.php/cookie
پس از بارگذاری این پروژه در مرورگر، با تصویری مشابه زیر مواجه خواهید شد.
مثل همیشه در صورتی که سوال یا پیشنهادی در مورد مباحث مطرح شده در این جلسه دارید، آن را از طریق بخش دیدگاهها با زومیت و سایر کاربران به اشتراک بگذارید.
نظرات