2012-03-14 129 views
0

我不能理解的CakePHP控制器會話的奇怪的行爲:CakePHP的會話煩惱

class UsersController extends AppController 
{ 
    public $helpers = array('Session'); 
    public $components = array('Session'); 

    public function Do() { 
     $this->Session->write('Foo', 'Bar'); 
     $_SESSION['Foo2'] = 'Bar2'; 

     echo $this->Session->read('Foo'); 
     echo $_SESSION['Foo2']; 
    } 
}; 

首先回聲輸出什麼,第二個 - Bar2。爲什麼本機$_SESSION可以工作,但通過CakePHP接口它不可用?

+0

它應該在代碼中沒有問題,你可以再次檢查 – 2012-03-14 19:20:34

+0

你有會話在'app/config/core.php'上正確設置嗎? – bfavaretto 2012-03-14 21:25:20

+0

@bfavaretto是的,它設置爲'php'。 – Ockonal 2012-03-15 07:10:57

回答

1

(這個回答假設CakePHP的1.3)

你在,你有Session.save設置爲php您的配置文件中的註釋說。在同一個文件中,你應該有Session.start設置爲true。如果你不這樣做,你有兩個選擇:

  • 實際使用會話組件之前設置Session.starttrue的配置文件,或者
  • 調用從控制器$this->Session->activate()

參考文獻:

http://book.cakephp.org/1.3/en/view/1465/Session(奇怪的是,Session.startactivate()只記錄了會議的幫手,但它們適用於組件太)。 http://book.cakephp.org/1.3/view/931/CakePHP-Core-Configuration-Variables