با سلام خدمت کاربران گرامی سایت پی وی لرن و آن دسته از کاربرانی که به زبان PHP علاقه دارند. این دوره آموزش CakePHP مخصوص آن ها تهیه شده تا مهارت و تسلط خود را بر این زبان با یادگیری CakePHP به حد کمال برسانند و با کمک آن به یک برنامه نویس حرفه ای در عرصه PHP تبدیل شوند. در جلسه گذشته به آموزش Internationalization سازی در CakePHP پرداختیم. در ادامه آموزش این فریم ورک آموزش مدیریت جلسات در CakePHP را به علاقمندان دوره ارائه کی نماییم.
جلسه به ما اجازه می دهد تا کاربران منحصر به فرد را در تقاضاها مدیریت کنیم و داده ها را برای کاربران خاص ذخیره نماییم.
داده های جلسه را می توانید در هر جایی که به object مورد درخواست دسترسی دارید؛ در اختیار داشته باشید؛ یعنی جلسات از کنترل کننده ها، نمایش ها، کمک کننده ها، سلول ها و اجزاء sessions are accessible from controllers, views, helpers, cells و components قابل دسترسی اند.
object یک جلسه می تواند با اجرای کد زیر ساخته شود.
1 | $session = $this->request->session(); |
برای نوشتن چیزی درون یک جلسه باید از روش write() session استفاده کرد.
1 | Session::write($key, $value) |
1 | $session->write('name', 'Virat Gandhi'); |
برای بازیابی داده های ذخیره شده از جلسه، می توانیم از روش read() session استفاده کنیم.
1 | Session::read($key) |
تابع فوق تنها یک argument را که key از مقدار و در زمان نوشتن داده های جلسه استفاده می شود، می گیرد.
هنگامی که کلید صحیح ارائه شد، تابع مقدار آن را به دست می آورد.
1 | $session->read('name'); |
وقتی می خواهید بررسی کنید که آیا داده های خاص در جلسه وجود دارد یا خیر، می توانید از روش check() session استفاده کنید.
1 | Session::check($key) |
تابع بالا فقط key را به عنوان argument می پذیرد.
1 2 3 | if ($session->check('name')) { // name exists and is not null. } |
برای حذف داده ها از جلسه، می توانیم از روش delete() session برای حذف داده ها استفاده کنیم.
1 | Session::delete($key) |
تابع بالا فقط key را به عنوان مقداری که باید از جلسه حذف شود در نظر می گیرد.
1 | $session->delete('name'); |
وقتی می خواهید اطلاعات را از جلسه بخوانید و سپس آن را حذف کنید، می توانیم از روش consume() session استفاده کنیم.
1 | static Session::consume($key) |
تابع بالا فقط key را به عنوان argument می پذیرد.
1 | $session->consume('name'); |
هنگامی که کاربر از سایت خارج می شود باید یک جلسه این کاربر را از بین ببریم.
و برای از بین بردن جلسه مذکور می توان از روش ()destroy استفاده کرد.
1 | Session::destroy() |
1 | $session->destroy(); |
با از بین بردن جلسه تمام داده های جلسه به غیر از کوکی های آن از سرور حذف خواهد شد.
اگر بخواهید جلسه کاربری را تمدید کنید، می توانیم از روش renew() session استفاده کنیم.
1 | Session::renew() |
1 | $session->renew(); |
آموزش مدیریت جلسات در CakePHP را با کامل کردن جلسات یا Complete Session به پایان می بریم.
1 | Make changes in the config/routes.php file as shown in the following program. |
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/sessionobject', ['controller'=>'Sessions','action'=>'index']); $routes->connect('/sessionread', ['controller'=>'Sessions','action'=>'retrieve_session_data']); $routes->connect('/sessionwrite', ['controller'=>'Sessions','action'=>'write_session_data']); $routes->connect('/sessioncheck', ['controller'=>'Sessions','action'=>'check_session_data']); $routes->connect('/sessiondelete', ['controller'=>'Sessions','action'=>'delete_session_data']); $routes->connect('/sessiondestroy', ['controller'=>'Sessions','action'=>'destroy_session_data']); $routes->fallbacks('DashedRoute'); }); Plugin::routes(); |
یک فایل SessionsController.php در src/Controller/SessionsController.php بسازید و سپس کد زیر را در فایل کنترل کننده کپی کنید.
src/Controller/SessionsController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace App\Controller; use App\Controller\AppController; class SessionsController extends AppController{ public function retrieveSessionData(){ //create session object $session = $this->request->session(); //read data from session $name = $session->read('name'); $this->set('name',$name); } public function writeSessionData(){ //create session object $session = $this->request->session(); //write data in session $session->write('name','Virat Gandhi'); } public function checkSessionData(){ //create session object $session = $this->request->session(); //check session data $name = $session->check('name'); $address = $session->check('address'); $this->set('name',$name); $this->set('address',$address); } public function deleteSessionData(){ //create session object $session = $this->request->session(); //delete session data $session->delete('name'); } public function destroySessionData(){ //create session object $session = $this->request->session(); //destroy session $session->destroy(); } } ?> |
یک دایرکتوری Sessions در src/Template ایجاد کنید و یک View file زیر دایرکتوری فراخوانی شده write_session_data.ctp بسازید و سپس کد زیر را در آن فایل کننده کپی کنید.
src/Template/Sessions/write_session_data.ctp
1 | The data has been written in session. |
یک فایل View دیگر با عنوان check_session_data.ctp زیر همان دایرکتوری Sessions بسازید و سپس کد زیر را در آن فایل کننده کپی کنید.
src/Template/Sessions/check_session_data.ctp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php if($name): ?> name exists in the session. <?php else: ?> name doesn't exist in the database <?php endif;?> <?php if($address): ?> address exists in the session. <?php else: ?> address doesn't exist in the database <?php endif;?> |
حالا یاز هم یک فایل View دیگر با عنوان delete_session_data.ctp زیر همان دایرکتوری Sessions بسازید و سپس کد زیر را در آن فایل کننده کپی کنید.
src/Template/Sessions/delete_session_data.ctp
1 | Session Destroyed. |
مثال بالا را با مراجعه به URL زیر اجرا کنید. این URL به شما در ایجاد جلسات کمک می کند.
http: // localhost: 85 / CakePHP / session-write
برای خواندن اطلاعات مربوط به جلسه از URL زیر دیدن کنید: http: // localhost: 85 / CakePHP / session-read
برای بررسی اطلاعات جلسه از آدرس زیر استفاده کنید: http: // localhost: 85 / CakePHP / sessioncheck
برای حذف اطلاعات جلسه از آدرس زیر استفاده کنید: http://localhost:85/CakePHP/sessiondelete
برای نابود سازی اطلاعات جلسه از آدرس زیر استفاده کنید: http://localhost:85/CakePHP/sessiondestroy
در این جلسه با آموزش مدیریت جلسات در CakePHP همراه شما بودیم.
جلسه بعدی با مدیریت کوکی ها در این فریم ورک آشنا خواهیم شد.
با پی وی لرن همراه باشید.