Сессии в 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 'удаляет все данные сеанса