کار با session در Yii2

سشن (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');

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *