2012-11-24 32 views
8

Tôi cố gắng để thiết lập một số biến phiên trong Yii sử dụng đoạn mã sau:Yii quản lý phiên

$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']) ; 

Tuy nhiên, tôi không có khả năng thiết lập các vaiables phiên trên, bãi có kết quả sau:

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" 

Nó thấy $ session và $ session ['ip'] là hai biến hoàn toàn khác nhau. Ai đó có thể giúp tôi với điều này?

Trả lời

26

Tôi làm việc với các phiên theo Yii theo cách khác, tôi sử dụng biến phiên toàn cầu dưới biến app(). Vì vậy, bạn có thể lưu trữ các giá trị như thế này:

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

Và bạn có thể nhận được giá trị như thế này:

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

Cuối cùng bạn có thể xóa nó như thế này:

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

Bằng cách này bạn có thể truy cập chúng ở khắp mọi nơi trong mã của bạn. Tôi khuyên bạn nên đọc bài viết này: http://www.larryullman.com/2011/05/03/using-sessions-with-the-yii-framework/ nó có tất cả thông tin mà bạn cần.

+0

Yeah, đây là những gì tôi đã kết thúc làm !! Cảm ơn câu trả lời anyways !! –

+0

Bạn được chào đón. – Skatox

+0

Tôi cũng sử dụng nó. Nhưng sự khác biệt giữa điều này và CHttpSession là gì? – shgnInc

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

$session->open(); 

$session['account_id'] = $id; 

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

chỉ có câu trả lời là rất đáng lo ngại. Vui lòng thêm một số giải thích về lý do/cách thức hoạt động của tính năng này. Đây là yii2 bằng cách này, không liên quan trực tiếp đến vấn đề của OP. – Gogol

Các vấn đề liên quan