
Sessionها در فریمورک Yii
Session یا نشست یا جلسات، به داده ها این قابلیت را می دهند که در صفحات مختلف قابل دسترسی باشند.session یک فایل روی server در یک پوشه موقت می سازد که در آن تمام متغیرهای session ذخیره می شوند. این اطلاعات در طول بازدید یک کاربر خاص، برای تمام صفحات وب سایت شما، قابل دسترسی می باشند.
وقتی یک session شروع می شود، چه مراحلی اتفاق می افتد :
- PHP یک ID منحصر به فرد برای آن session خاص ایجاد می کند.
- یک cookie به نام PHPSESSID در سمت client (به مرورگر) ارسال می شود.
- server یک فایل در پوشه موقت ایجاد می کند که در آن تمام متغیرهای session ذخیره می شوند.
- هنگامی که server می خواهد، مقدارِ یک متغیر session را بازیابی کند، PHP به طور خودکار آی دی منحصر به فرد session را از کوکی PHPSESSID می گیرد. سپس، آن را در دایرکتوری موقت خود برای پیدا کردن فایل مورد نظر جستجو می کند.
برای شروع یک session، باید تابع session_start() را فراخوانی کنید. تمام متغیرهای session، در متغیر گلوبال $_SESSION ذخیره می شوند. برای بررسی اینکه آیا متغیر session سِت شده است یا خیر، می توانید از تابع isset() استفاده کنید.
<?php
session_start();
if( isset( $_SESSION['number'] ) ) {
$_SESSION['number'] += 1;
}else {
$_SESSION['number'] = 1;
}
$msg = "This page was visited ". $_SESSION['number'];
$msg .= "in this session.";
echo $msg;
?>
برای از بین بردن یک session، باید تابع session_destroy() را فراخوانی کنید. برای از بین بردن یک متغیر session، تابع unset() را فراخوانی کنید.
<?php
unset($_SESSION['number']);
session_destroy();
?>
نحوه ی استفاده از sessionها در فریمورک yii
Sessionها این امکان را به داده ها می دهند که بتوانند در سراسر درخواست های کاربران قابل دسترسی باشند. در PHP شما می توانید از طریق متغیر $_SESSION به آنها دسترسی پیدا کنید. در Yii، از طریق کامپوننت برنامه Session می توانید به session ها دسترسی پیدا کنید.
مرحله 1 - متد actionOpenAndCloseSession را به SiteController اضافه کنید.
public function actionOpenAndCloseSession() {
$session = Yii::$app->session;
// open a session
$session->open();
// check if a session is already opened
if ($session->isActive) echo "session is active";
// close a session
$session->close();
// destroys all data registered to a session
$session->destroy();
}
در کد بالا، ما کامپوننت برنامه session را دریافت کردیم، که یک session را باز می کند، بررسی می کند که آیا آن فعال است یا نه، session را می بندد، و در نهایت آن را از بین می برد.
مرحله 2 – در آدرسبار مرورگر وب تان http://localhost:8080/index.php?r=site/open-and-close-session را تایپ کنید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
شما می توانید، برای دسترسی به متغیرهای session ، از متدهای set()و get() استفاده کنید.
مرحله 3 - متد actionAccessSession را به SiteController اضافه کنید.
public function actionAccessSession() {
$session = Yii::$app->session;
// set a session variable
$session->set('language', 'ru-RU');
// get a session variable
$language = $session->get('language');
var_dump($language);
// remove a session variable
$session->remove('language');
// check if a session variable exists
if (!$session->has('language')) echo "language is not set";
$session['captcha'] = [
'value' => 'aSBS23',
'lifetime' => 7200,
];
var_dump($session['captcha']);
}
مرحله 4 - به آدرس http://localhost:8080/index.php?r=site/access-session بروید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…