2012-11-24 10 views
8

Próbuję ustawić jakąś zmienną sesji w Yii stosując następujący kod:Yii zarządzania sesją

$session=new CHttpSession; 
      $session->open() ; 
      $session->setSessionName('My Session') ; 
      $session['sleep'] = 0 ; 
      $session['attempts'] = 0 ; 
      $session->writeSession('sleep','0') ; 
      $session['ip'] = $this->get_ip_address() ; $session->close() ; var_dump($session,$session['ip']) ; 

Jednak nie jestem w stanie ustawić vaiables sesji powyższego zrzutu ma następujący wynik:

object(CHttpSession)#17 (5) { ["autoStart"]=> bool(true) ["behaviors"]=> array(0) { } ["_initialized":"CApplicationComponent":private]=> bool(false) ["_e":"CComponent":private]=> NULL ["_m":"CComponent":private]=> NULL } string(3) "::1" 

Widzi $ sesję i $ sesję ['ip'] jako dwie zupełnie różne zmienne. Czy ktoś może mi w tym pomóc?

Odpowiedz

26

Pracuję z sesjami pod Yii w inny sposób, używam globalnej zmiennej sesji pod zmienną app(). Więc można przechowywać wartości tak:

Yii::app()->session['sleep'] = "value"; 

I można uzyskać wartości tak:

$sleep = Yii::app()->session['sleep']; 

Wreszcie można go usunąć tak:

unset(Yii::app()->session['sleep']); 

W ten sposób można uzyskać dostęp je wszędzie w swoim kodzie. Polecam przeczytać ten artykuł: http://www.larryullman.com/2011/05/03/using-sessions-with-the-yii-framework/ ma wszystkie potrzebne informacje.

+0

Tak, to jest to, co skończyło się robi !! Dzięki za odpowiedź tak czy inaczej! –

+0

Nie ma za co. – Skatox

+0

Ja też tego używam. Ale jaka jest różnica między tym i CHttpSession? – shgnInc

-1
 
$session = new \yii\web\Session(); 

$session->open(); 

$session['account_id'] = $id; 

$session['account_name'] = $name; 
+1

odpowiedzi tylko kod są przerażające. Proszę podać wyjaśnienie, dlaczego/jak to działa. Jest to tak na marginesie, niezwiązane bezpośrednio z problemem PO. – Gogol