سشن (session ) راهی است که به وسیله ی آن می توانید
اطلاعات خود را در آن ذخیره کنید و در هر صفحه ای از سایت
که کاربر آن را به وسیله ی request فراخوانی می کند از آن استفاده کنید
در php با استفاده از متغییر گلوبال $_SESSION به آن دسترسی داریم .
حالا در yii2 آن را بررسی می کنیم
برای باز و بستن session ابتدا namespace آن را فراخوانی می کنیم
use yii\web\Session; $session = Yii::$app->session;
بعد متد های مربوط به آن را صدا می زنیم
برای باز کردن یا شروع سشن
$session->open();
برای خارج شدن یا پایان
$session->close();
برای حذف سشن هم از کد زیر استفاده می کنیم
$session->destroy();
مرحله ی بعدی مقدار دهی به سشن می باشد که خیلی ساده به روش های زیر این کار را انجام می دهیم
$session = Yii::$app->session; $session->set('username', 'goyii'); //OR $session['username'] = 'goyii'; //OR $_SESSION['username'] = 'goyii';
همچنین برای فراخوانی مقدار سشن به این صورت عمل می کنیم
$session = Yii::$app->session; $user_id = $session->get('username'); //OR $user_id = $session['username']; //OR $username= isset($_SESSION['username']) ? $_SESSION['username'] : null;
برای پاک کردن سشن
$session = Yii::$app->session; $session->remove('username'); //OR unset($session['username']); //OR unset($_SESSION['username']);
برای بررسی این که سشنی در دسترس هست یا وجوددارد یا نه نیز کد زیر
if ($session->has('username')) ... //OR if (isset($session['username'])) ... //OR if (isset($_SESSION['username'])) ...
در صورتی که بخواهید لیست سشن های موجود را مشاهده کنید از کد زیر کمک بگیرید
foreach ($session as $session_name => $session_value) echo $session_name.' - '.$session_value; //OR foreach ($_SESSION as $session_name => $session_value) echo $session_name.' - '.$session_value;
نکته ی بعدی استفاده از آرایه در سشن هست
به این صورت که مقدار سشن شما شامل آرایه می باشد
به مثال زیر توجه کنید
$session = Yii::$app->session; $session['user'] = [ 'id' => 1, 'username' => 'goyii.ir', ]; echo $session['user']['id']; echo $session['user']['username']; $session['user.id'] = 1; $session['user.username'] = 'goyii';
در مثال بالا نمی توانید مقدار دهی به صورت زیر داشته باشید و کار نمی کند
$session['user']['id'] = 1; $session['user']['username'] = 'goyii';
و در آخر استفاده از Flash Data در سشن
$session = Yii::$app->session; //assign the message for flash variable $session->setFlash('userinsert', 'You have successfully registered.'); // check the availability $result = $session->hasFlash('userinsert'); // get and display the message echo $session->getFlash('userinsert');