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

هنگام ساخت یک وب سایت، بسیار پیش می آید که نیاز خواهیم داشت تا فعالیت کاربر را تحت نظر گرفته و بدین منظور یکی از بهترین روش ها، استفاده از سشن ها است. پیش از این در سری آموزش پی اچ پی در ، شما را با سشن ها آشنا کردیم. اما فریم ورک Codeigniter دارای یک کلاس مجزا برای مدیریت و کار با Session ها است که کار را برای ما بسیار آسان کرده است. در ادامه ی این آموزش با همراه باشید.

تعریف و مقداردهی اولیه ی یک سشن

اطلاعات ذخیره شده در سشن ها در همه جای وب سایت در دسترس خواهد بود ولی به منظور استفاده از این داده ها باید ابتدا سشن های مورد نظر خود را تعریف کنیم و مقداردهی اولیه (initialize) آن را انجام دهیم. برای تعریف اینیشیالایز کردن یک سشن می توان از دستور زیر استفاده کرد.

$this->load->library('session'); 

همانطور که احتمالا متوجه شده اید، کد بالا باعث می شود تا کتابخانه ی سشن ها در اپلیکیشن ما لود شود و از این پس می توانیم از دستورات و متدهای داخلی این کتابخانه در پروژه ی خود استفاده کنیم. شیء سشن پس از لود کردن کتابخانه ی مدیریت سشن ها که session نام دارد، به صورت زیر خواهد بود:

$this->session 

افزودن اطلاعات به سشن ها

در پی اچ پی با استفاده از آرایه ی SESSION_$ می توانستیم داده های مورد نظر خود را در سشن ها ذخیره کنیم. در این حالت باید از کدی مثل کد زیر استفاده می کردیم:

$_SESSION[‘key’] = value; 

در کد بالا عبارت key نام مورد نظر ما برای سشن و عبارت value همان داده یا مقدار مورد نظر برای ذخیره شدن در سشن است. در واقع با کد بالا مقدار value را به سشن key نسبت داده ایم.

همین کار را می توان در فریم ورک Codeigniter نیز به آسانی و به صورتی منسجم تر انجام داد. بدین منظور نیز باید از کدی مثل کد زیر استفاده کنیم:

$this->session->set_userdata('some_name', 'some_value'); 

تابع ()set_userdata دو آرگومان ورودی دریافت می کند. اولین آرگومان که در کد بالا some_name تعیین شده، یک نام دلخواه برای سشن مورد نظر است که قصد ایجاد آن را داریم. این مقدار همان key است که برای استفاده از سشن در پی اچ پی تعیین کرده بودیم. همچنین آرگومان دوم متد ()set_userdata در کد بالا some_value تعیین شده است. این آرگومان مقدار مورد نظر برای ذخیره شدن در سشن است.

علاوه بر این، تابع ()set_userdata را می توان به روشی دیگر نیز مورد استفاده قرار داد. در واقع می توان به جای یک مقدار تکی مثل آنچه در کد بالا مشاهده کردید، یک آرایه از مقادیر مورد نظر را در سشن خود ذخیره کنیم. در این شرایط می توان از کدی شبیه زیر استفاده کرد:

$newdata = array( 'username' => 'mojtaba', 'email' => [email protected]', 'logged_in' => TRUE ); $this->session->set_userdata($newdata);

در کد بالا یک آرایه به نام newdata$ ایجاد کرده ایم که شامل سه عضو است. اعضای این آرایه با کلید هایی به نام username و email و logged_in تعیین شده و مقدار آن ها به ترتیب mojtaba و [email protected] و TRUE قرار داده شده است. عضو اول برای نگه داری نام کاربری، عضو دوم برای نگه داری ایمیل کاربر و عضو سوم آرایه ی فوق برای نگه داری وضعیت لاگین شدن کاربر به سایت مورد استفاده واقع شده است.

در نهایت با استفاده از متد ()set_userdata از کتابخانه ی session فریم ورک، این آرایه را به عنوان آرگومان ورودی قرار داده ایم. بدین ترتیب به جای یک مقدار تکی، مجموعه ای از مقادیر را به صورت یک آرایه در سشن مورد نظر ذخیره کرده ایم.

حذف داده ها از سشن

در پی اچ پی برای حذف مقادیر ذخیره شده در یک سشن، از تابع ()unset استفاده می کردیم که مثالی از آن در زیر آورده شده است:

unset($_SESSION[‘some_name’]); 

کد بالا باعث می شود تا اطلاعات ذخیره شده در سشنی به نام some_name به طور کامل پاک شوند. اما حذف اطلاعات ذخیره شده در سشن ها در فریم ورک Codeigniter بسیار آسان تر است. بدین منظور باید از متد ()unset_userdata کتابخانه ی session بهره ببریم. به مثال زیر توجه کنید:

$this->session->unset_userdata('some_name'); 

در کد بالا نیز مقادیر ذخیره شده در سشنی به نام some_name را با استفاده از فریم ورک حذف کرده ایم.

اگر قصد دارید مقادیر بیشتری را از یک سشن حذف کرده یا آرایه ی ذخیره شده در یک سشن را به طور کامل پاک کنید، در این حالت می توانید از تابع ()unset_userdata به شکل زیر بهره ببرید:

$this->session->unset_userdata($array_items); 

کد بالا باعث می شود تمام آرایه ی ذخیره شده در سشن مورد نظر به طور کامل حذف شود.

استفاده از داده های ذخیره شده در سشن ها

پس از ذخیره کردن اطلاعات و داده های مورد نظر در سشن ها می تواند هر زمان که نیاز بود به این داده ها دسترسی داشت. بدین منظور باید از تابع ()userdata استفاده کنیم. اگر داده های که قصد دارید به آن ها دست یابید موجود نباشند، این متد مقدار NULL را بر می گرداند. روش استفاده از این تابع را می توانید در کد زیر مشاهده کنید:

$name = $this->session->userdata('name'); 

کد بالا مقدار ذخیره شده در سشنی به نام name را در متغیر name$ ذخیره می کند.

مثال

مثل همیشه ابتدا نرم افزار Xampp را اجرا کرده و سرورهای آپاچی و مای اس کیو ال را در حال فعال قرار دهید.

یک پروژه ی جدید Codeigniter ایجاد کرده و آن را همانند آموزش های جلسات اولیه نصب و پیکربندی کنید. ما برای این مثال پوشه ی جدیدی در htdocs نرم افزار زمپ ایجاد کرده ایم و نام آن را codei-session گذاشته ایم. سپس فریم ورک را در این پوشه نصب و پیکربندی کرده ایم.

حال باید کنترلر مورد نظر را ایجاد کنیم. بدین منظور در مسیر application/controller یک فایل جدید به نام Session_controller.php ایجاد کرده و سپس کد زیر را در آن قرار دهید.

<?php class Session_controller extends CI_Controller { public function index() { //loading session library $this->load->library('session'); //adding data to session $this->session->set_userdata('name','virat'); $this->load->view('session_view'); } public function unset_session_data() { //loading session library $this->load->library('session'); //removing session data $this->session->unset_userdata('name'); $this->load->view('session_view'); } } ?>

کنترلر بالا همانطور که مشاهده می کنید شامل دو متد اصلی است. متد ()index و متد ()unset_session_data. کد بالا را به صورت خط به خط در ادامه توضیح می دهیم. ابتدا متد index را بررسی می کنیم. با استفاده از کد:

//loading session library $this->load->library('session');

کتابخانه ی مدیریت سشن ها را در فریم ورک لود می کنیم. سپس با استفاده از کد زیر:

//adding data to session $this->session->set_userdata('name','virat');

سشن مورد نظر را ایجاد و مقدار مورد نظر را نیز در آن ذخیره می کنیم. در نهایت فایل ویو این متد را با کد زیر اجرا می کنیم.

$this->load->view('session_view');

سپس در متد unset_session_data با استفاده از کد:

//loading session library $this->load->library('session');

ابتدا کتابخانه ی سشن ها را در فریم ورک لود می کنیم. سپس با استفاده از کد زیر:

//removing session data $this->session->unset_userdata('name'); $this->load->view('session_view');

اطلاعات ذخیره شده در سشن مورد نظرمان را به طور کامل پاک می کنیم. در واقع در این کنترلر با استفاده از متد index سشن را ایجاد و مقدار دهی کرده ایم و متد unset_session_data نیز به منظور حذف اطلاعات سشن بکار می رود.

حال باید فایل ویو یاد شده را ایجاد کنیم. بدین منظور در مسیر application/views یک فایل جدید به نام session_view.php ایجاد کرده و سپس کد زیر را در آن قرار دهید:

<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Session Example</title> </head> <body> Welcome <?php echo $this->session->userdata('name'); ?> <br> <a href = 'http://127.0.0.1/codei-session/index.php/sessionex/unset'> Click Here</a> to unset session data. </body> </html>

همانطور که در بالا مشاهده می کنید با استفاده از کد:

<?php echo $this->session->userdata('name'); ?>

به مقدار ثبت شده در سشن در فایل ویو دست یافته و آن را به کاربر نمایش می دهیم. همچنین از آنجا که پروژه ما در پوشه ی codei-session قرار دارد، لینک حذف سشن برای ما به صورت زیر خواهد بود که آن را با استفاده از تگ a در کد بالا ایجاد کرده ایم و با کلیک روی این لینک، اطلاعات سشن حذف خواهد شد.

http://127.0.0.1/codei-session/index.php/sessionex/unset

در نهایت باید تغییراتی را در فایل application/config/routes.php ایجاد کنید. این فایل را باز کرده و سپس خط زیر را به آخر کدهای موجود در آن اضافه کنید:

$route['sessionex'] = 'Session_Controller'; 

حال پروژه را در مرورگر اجرا کنید. اگر همه چیز را به درستی و مطابق با آموزش انجام داده باشید، سشن مورد نظر ایجاد شده و مقدار آن به کاربر نمایش داده خواهد شد. همچنین با کلیک روی لینک Click Here تابع مربوط به حذف اطلاعات سشن در کنترلر فراخوانی شده و بنابراین داده های ذخیره شده در سشن ایجاد شده در مرحله ی قبل، حذف خواهد شد. مسیر این پروژه برای ما به صورت زیر خواهد بود.

http://127.0.0.1/codei-session/index.php/sessionex

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


برچسب ها :  

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