Cakephp会话遇到了麻烦

时间:2012-03-14 18:13:19

标签: php session 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'];
    }
};

第一个echo不输出,第二个输出 - Bar2。为什么native $_SESSION可以工作但是通过CakePHP接口它不可用?

1 个答案:

答案 0 :(得分:1)

(这个答案假设是CakePHP 1.3)

您在评论中说,您的配置文件中Session.save设置为php。在同一文件中,您应将Session.start设置为true。如果不这样做,您有两种选择:

  • 实际上在配置文件中将Session.start设置为true,或
  • 在使用会话组件之前从控制器调用$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