Сессии в Yii
Здесь я иду, что делаю, я использую
Yii::app()->SESSION['userid']
без
Yii::app()->session->open();
при входе в систему
Yii::app()->session->destroy();
при выходе из системы
Я хочу знать, не стоит ли открывать и уничтожать сессию, это достойно. Yii делает это внутренне.
Еще одна странная вещь, которую я не знаю, что происходит. В том же браузере для сеанса я могу войти в систему для нескольких пользователей. Это не должно произойти. Это значит, что я не использую методы open и destroy session.
public function actionLogout()
{
Yii::app()->user->logout();
Yii::app()->session->clear();
$this->redirect(Yii::app()->controller->module->returnLogoutUrl);
}
Пожалуйста, дайте мне знать, как мне это понять.
Ответы
Ответ 1
Для создания сессии yii
Yii::app()->session['userid'] = "value";
Вы можете получить значение, подобное этому
$sleep = Yii::app()->session['userid'];
И отключить сеанс вроде
unset(Yii::app()->session['userid']); # Remove the session
В случае выхода пользователя из аккаунта вы должны удалить весь сеанс.
Yii::app()->session->clear();
После этого вам нужно удалить фактические данные с сервера
Yii::app()->session->destroy();
Ответ 2
Не очищать сеанс, только выход из системы:
Yii::app()->user->logout(false);
Ответ 3
Как только вы закончите сеанс, он позволит вам в одном браузере несколько раз, я имею в виду, что для одного и того же URL-адреса он позволит вам войти в систему, вы можете просто переименовать свою переменную сеанса с другим именем и проверить, чтобы переменная участника для входа в систему с этим.
Сессия - это компонент веб-приложения, к которому можно получить доступ через Yii:: $app- > session.
Чтобы начать сеанс, вызовите функцию open(); Чтобы завершить и отправить данные сеанса, вызовите функцию close(); Чтобы уничтожить сеанс, вызовите destroy().
Сессия может использоваться как массив для установки и получения данных сеанса. Например,
$session = new Session;
$session->open();
$value1 = $session['name1']; // get session variable 'name1'
$value2 = $session['name2']; // get session variable 'name2'
foreach ($session as $name => $value) // traverse all session variables
$session['name3'] = $value3; // set session variable 'name3'
Ответ 4
В YII сеанс обрабатывается классом CHARTSession - http://www.yiiframework.com/doc/api/1.1/CHttpSession
Если вы используете метод open() 'Yii::app()->session->open();
, зависит от вашей конфигурации. Если в main.php
вы установили
'session' => array (
'autoStart' => true,
),
, то сеанс автоматически запускается самим YII.
Вы можете ссылаться на исходный код метода init() здесь - https://github.com/yiisoft/yii/blob/1.1.16/framework/web/CHttpSession.php#L83
Относительно вашего вопроса об использовании методов close() 'или' destroy() 'метод' close() 'только отключает ключи сеанса, но' destroy 'удаляет все данные сеанса