Я включил сеанс в моем приложении, как это (в config.php
, components
раздел):
'session' => array(
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'timeout' => 86400,
'sessionName' => 'SOMEABSTRACT_PHPSESSID',
),
В UserIdentity
Я пытаюсь сделать это:
$_SESSION['userid'] = $model->id;
Это означает, что я установлю этот новый сеанс после входа в систему моего пользователя. Но когда я пытаюсь получить доступ к $_SESSION['userid']
или просто $_SESSION
— для чтения — я получаю это исключение:
Undefined variable: _SESSION
Это способ, которым я пытаюсь получить доступ к этому массиву сеанса:
echo '<pre>';
die(var_dump($_SESSION, $_SESSION['userid']));
У меня нет никаких подсказок по этому поводу, поэтому мои два простых вопроса по этому вопросу:
autoStart => true
?PS Мне это нужно для интеграции CometChat с фреймворком Yii.
Вы можете иметь @session_start();
, Это подавит предупреждения, если сеанс уже запущен, а также установит переменную следующим образом Yii::app()->session['userid'] = $model->id;
и получить то же самое с Yii::app()->session['userid']
везде, где это требуется.
Также вы можете настроить зарегистрированного пользователя таким образом после начала сессии
$this->_id=$model->id;
$this->setState('title', $model->username);
$this->setState('role', $model->role);
Выше приведены переменные по умолчанию в yii для зарегистрированных пользователей. Для создания новой записи пользователя в сеансе вы можете иметь это Yii::app()->session['variablename']
Попробуйте вот так, в вашем UserIdentity.php —
//After successfully authentication, create session
Yii::app()->session;
Yii::app()->session['userid'] = $user->id;//Now you can get anywhere like this -
echo Yii::app()->session['userid'];