با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که دوره آموزش codeigniter را دنبال می کنند. با قابلیت flashdata در codeigniter آشنا شدیم. در این جلسه قرار است به آموزش tempdata در codeigniter بپردازیم.
اگر می خواهید اطلاعات استفاده شده در یک جلسه را پس از طی یک دوره زمانی خاص حذف نمایید؛ tempdata قابلیتی در codeigniter است که به شما امکان می دهد به سادگی این عمل را انجام دهید. برای یادگیری این قابلیت، آموزش tempdata در codeigniter را دنبال نمایید.
برای اضافه کردن داده ها به عنوان tempdata، باید از کارکرد mark_as_tempdata () استفاده کنیم. این کارکرد از دو آیتم argument استفاده می نماید تا آیتم ها را به شکل tempdata ذخیره کند و زمان انقضاء داده ها را به شکل زیر نمایش دهد.
1 2 | // 'item' will be erased after 300 seconds(5 minutes) $this->session->mark_as_temp('item',300); |
علاوه بر این می توانید از هر array که می خواهید برای ذخیره سازی داده های چندگانه استفاده کنید. تمام موارد ذخیره شده بعد از ۳۰۰ ثانیه منقضی شده و از بین می روند.
1 | $this->session->mark_as_temp(array('item','item2'),300); |
همچنین می توانید به مانند کدهای زیر، هرگونه تنظیم دلخواه خود را برای تعیین زمان انقضاء داده ها انجام دهید.
1 2 3 4 5 6 7 | // 'item' will be erased after 300 seconds, while 'item2' // will do so after only 240 seconds $this->session->mark_as_temp(array( 'item'=>300, 'item2'=>240 )); |
می توان با استفاده از کارکرد ()tempdata بازیابی tempdata را انجام داد.این کارکرد شما را مطمئن می سازد به جای استفاده از همه ی داده ها، تنها از tempdata استفاده می کنید. به مثال زیر توجه کنید تا متوجه شوید که چطور می توان tempdata را بازیابی کرد. کارکرد ()tempdata از آیتم یک argument استفاده می کند.
1 | $this->session->tempdata('item'); |
اگر argument را از قلم بی اندازید، باز هم می توانید تمام tempdata را بازیابی نمایید.
اگر چه tempdata پس از تمام شدن زمان انقضاء آن به صورت خودکار حذف خواهد شد اما اگر بخواهید tempdata را پیش از موعد مقرر آن حذف نمایید؛ همان طور که در زیر مشاهده می کنید؛ می توانید از کارکرد unset_tempdata() استفاده نمایید. این کارکرد از آیتم یک argument برای حذف tempdata استفاده می کند.
1 | $this->session->unset_tempdata('item'); |
یک کلاس با عنوان Tempdata_controller.php ایجاد کنید و آن را در application/controller/Tempdata_controller.php ذخیره کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php class Tempdata_controller extends CI_Controller { public function index() { $this->load->library('session'); $this->load->view('tempdata_view'); } public function add() { $this->load->library('session'); $this->load->helper('url'); //tempdata will be removed after 5 seconds $this->session->set_tempdata('item','item-value',5); redirect('tempdata'); } } ?> |
یک فایل با عنوان tempdata_view.php بسازید و آن را در application/views/tempdata_view.php ذخیره کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Tempdata Example</title> </head> <body> Temp Data Example <h2><?php echo $this->session->tempdata('item'); ?></h2> <a href = 'tempdata/add'>Click Here</a> to add temp data. </body> </html> |
این تغییرات را در routes.php در application/config/routes.php ایجاد کنید و خط زیر را به انتهای فایل اضافه نمایید.
1 2 | $route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add"; |
مثال بالا را با مراجعه به لینک زیر اجرا کنید. yoursite.com را با URL سایت خود جایگزین کنید.
1 | http://yoursite.com/index.php/tempdata |
بعد از بازدید از URL بالا، نتیجه را به صورت زیر مشاهده خواهید کرد.
روی پیوند “کلیک کنید” کلیک کنید؛ صفحه ای به صورت زیر مشاهده خواهید کرد.
روی پیوند “کلیک کنید” کلیک کنید؛ صفحه ای به صورت زیر برای شما به نمایش در خواهد آمد.
در این صفحه می توانید مقدار متغیر tempdata را ببینید.
بعد از پنج ثانیه دوباره صفحه را Refresh نمایید
در مرحله بعد صفحه ای به شکل زیر خواهید دید که در آن مقدار متغیر tempdata به صورت خودکار بعد از پنج ثانیه حذف شده است.
توجه داشته باشید که اگر صفحه مورد نظر را در کمتر از پنج ثانیه Refresh نمایید.
از آن جا که دوره زمانی مورد نظر منقضی نشده، tempdata حذف نخواهد شد.
در PHP، برای از بین بردن session از کارکرد () session_destroy استفاده می کنیم . اما در codeigniter می توان این کارکرد را با کمک خط زیر از بین برد.
1 | $this->session->sess_destroy(); |
بعد از نام گذاری این کارکرد، تمام داده های session، یعنی flashdata و tempdata به صورت خودکار حذف خواهند شد و دیگر نمی توان آن ها را بازیابی نمود.
در این جلسه از سری جلسات آموزش codeigniter با قابلیت tempdata در کدایگنایتر آشنا شدید. در جلسه بعد از این سری آموزشی قرار است که با قابلیت مدیریت کوکی ها در فریم ورک codeigniter خواهیم بپردازیم.