使用Zend_Form_Element_Captcha - 会话已经启动

时间:2014-11-20 12:10:57

标签: php zend-framework

我正在尝试添加Captcha作为大型申请表的一部分。

收到以下错误:

session has already been started by session.auto-start or session_start()

如何在幕后使用它来解决这个问题:

// Process metadata specific only to this namespace.
Zend_Session::start(true); // attempt auto-start (throws exception if strict option set)

我在Controller中实例化它:

$this->view->captcha = new Zend_Form_Element_Captcha('captcha', array(
            'captcha' => array(
                'captcha' => 'Figlet',
                'wordLen' => 6,
                'width' => 300,
                'height' => 100,
          )
      )
 );

在视图中:

<?php echo $this->captcha; ?>

我无法篡改当前会话,因为它掌握了大量信息。有解决方法吗?

帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在这种情况下你可以做一件事,尝试以下面的方式在bootstrap文件中启动Zend session并在注册表中设置该会话对象:

protected function _initSession() {
    $userSession = new Zend_Session_Namespace('user_session');
    Zend_Registry::set('userSession', $userSession);
}

在此之后,您将能够从注册表中获取会话对象。

$userSession = Zend_Registry::get('userSession');

由于您将在Zend Session之前启动session_start(),因此可能不会产生任何错误。