2014-09-30 6 views
2

Я включил сессии в моем приложении, как это (в 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'])); 

Я не «т есть какие-либо улики по этому поводу, так что мои два простых вопроса для этого выпуска являются:

  1. Почему это происходит только тогда, когда сессии Yii вы включили и autoStart => true?
  2. Как это исправить?

PS Мне это нужно для интеграции CometChat с инфраструктурой Yii.

+0

в конфигурации, является сессия автозапуск это правда или нет ..? – Naincy

+0

Да. Когда я помещаю 'session_start()', но я вообще не получаю '$ _SESSION ['userid']'. Но если я установлю 'session_start()', когда я пытаюсь установить сеанс, я получаю это исключение: «Сессия уже запущена - игнорирование session_start()' –

+0

@NaincyGupta - По умолчанию это «истина». –

ответ

2

У вас может быть @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']

+0

Мне нужно получить доступ к переменной сеанса за пределами моей области проекта Yii. Это не сработает. –

0

Попробуйте, как это, в вашем 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']; 
+0

Мне нужно получить доступ к переменной сеанса за пределами моей области проекта Yii. Это не сработает. –

+0

@ переменная сеанса Karadža, работающая внутри этой конкретной области проекта не снаружи. ok напечатайте 'echo Yii :: app() -> user-> id' как внутри, так и вне области вашего проекта после входа в систему и дайте мне ответ, каков результат? –

 Смежные вопросы

  • Нет связанных вопросов^_^