آموزش Codeigniter – جلسه سیزدهم: مدیریت کوکی ها


اگر سری آموزشی پی‌اچ‌پی را در زومیت دنبال کرده‌ باشید، به یاد دارید که در مورد کوکی‌ها صحبت کرده بودیم. کوکی‌ها در واقع داده‌های کوچکی هستند که از سرور ارسال و در رایانه‌ی کاربر ذخیره می‌شوند. در فریم‌ورک 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 ایجاد کرده و سپس کد زیر را در آن قرار داده و سپس ذخیره کنید.

<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter View Example</title> </head> <body> <a href = 'display'>Click Here</a> to view the cookie.<br> <a href = 'delete'>Click Here</a> to delete the cookie. </body> </html>

همانطور که می‌بینید کد بالا فقط شامل دو لینک به توابعی است که در فایل کنترلر ایجاد کرده بودیم. یک لینک به منظور نمایش و دیگری به منظور حذف کوکی بکار می‌روند. البته ما باید برای فریم‌ورک تعیین کنیم که در صورت مراجعه به این دو لینک دقیقا چه توابعی را اجرا کند زیرا مثل سایر پروژه‌ها و به منظور آشنایی بیشتر با فایل 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

پس از بارگذاری این پروژه در مرورگر، با تصویری مشابه زیر مواجه خواهید شد.

آموزش Codeigniter - جلسه سیزدهم: مدیریت کوکی ها

مثل همیشه در صورتی که سوال یا پیشنهادی در مورد مباحث مطرح شده در این جلسه دارید، آن را از طریق بخش دیدگاه‌ها با زومیت و سایر کاربران به اشتراک بگذارید.

این مطلب در سایت "زومیت" منتشر شده است.

[ منبع این خبر سایت سایر می باشد. ]

در صورتی که در خبر منتشر شده تخلفی مشاهده میکنید و یا نیاز به ارتباط با مسئول سایت جوونی | جدیدترین اخبار روز ایران و دنیا دارید روی این قسمت کلیک کنید.

گزارش تخلف

تمامی مطالب از سایت های مجاز فارسی و ایرانی تهیه و جمع آوری شده است، در صورت وجود هرگونه مشکل از طریق صفحه گزارش تخلف اطلاع دهید.

تبلیغات

جدیدترین اخبار منتشر شده

تبلیغات

دانلود سریال خارجی

دانلود فیلم ایرانی

دانلود فیلم خارجی

دانلود فیلم و سریال