Yii - Sesje
Sesje udostępniają dane na różnych stronach. Sesja tworzy plik na serwerze w katalogu tymczasowym, w którym przechowywane są wszystkie zmienne sesji. Dane te są dostępne dla wszystkich stron Twojej witryny internetowej podczas wizyty tego konkretnego użytkownika.
Po rozpoczęciu sesji dzieje się co następuje -
PHP tworzy unikalny identyfikator dla tej konkretnej sesji.
Plik cookie o nazwie PHPSESSID jest wysyłany po stronie klienta (do przeglądarki).
Serwer tworzy plik w folderze tymczasowym, w którym zapisywane są wszystkie zmienne sesji.
Gdy serwer chce pobrać wartość ze zmiennej sesji, PHP automatycznie pobiera unikalny identyfikator sesji z pliku cookie PHPSESSID. Następnie szuka w katalogu tymczasowym potrzebnego pliku.
Aby rozpocząć sesję, należy zadzwonić pod numer session_start()funkcjonować. Wszystkie zmienne sesji są przechowywane w pliku$_SESSIONzmienna globalna. Możesz także użyćisset() funkcja, aby sprawdzić, czy zmienna sesji jest ustawiona -
<?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;
?>
Aby zniszczyć sesję, powinieneś wywołać session_destroy()funkcjonować. Aby zniszczyć pojedynczą zmienną sesji, wywołajunset() funkcja -
<?php
unset($_SESSION['number']);
session_destroy();
?>
Korzystanie z sesji w Yii
Sesje umożliwiają utrwalanie danych we wszystkich żądaniach użytkowników. W PHP możesz uzyskać do nich dostęp poprzez plik$_SESSIONzmienna. W Yii możesz uzyskać dostęp do sesji poprzez komponent aplikacji sesji.
Step 1 - Dodaj actionOpenAndCloseSession metoda do 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();
}
W powyższym kodzie pobieramy komponent aplikacji sesji, otwieramy sesję, sprawdzamy czy jest aktywna, zamykamy sesję, a na końcu niszczymy.
Step 2 - Typ http://localhost:8080/index.php?r=site/open-and-close-session na pasku adresu przeglądarki internetowej zobaczysz następujące informacje.
Aby uzyskać dostęp do zmiennych sesji, możesz użyć set() i get() metody.
Step 3 - Dodaj actionAccessSession metoda do 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']);
}
Step 4 - Idź do http://localhost:8080/index.php?r=site/access-sessionzobaczysz, co następuje.