Zend Framwork Session в Internet Explorer

Все еще не мог заставить это работать после публикации этой ссылки: сеанс Zend Framework потерян

У меня есть форма регистрации, которая позволяет пользователям регистрироваться и перенаправлять их прямо на свои страницы. Все отлично работает на всех браузерах, кроме INTERNET EXPLORER.

Я пробовал разные способы, но до сих пор не могу заставить его работать. После сохранения пользователя в базе данных сеанс не будет сохранен. Но если я уберу сохранение пользователя, сеанс и куки могут быть сохранены.

Вот код:

public function signUpAction()
{
    $signupForm = new Application_Form_UserSignUp();
    if ($this->getRequest()->isPost())
    {

        if ($signupForm->isValid($this->getRequest()->getParams()))
        {
            $user = $this->_helper->model('Users')->createRow($signupForm->getValues());
            if ($user->save())
            {
                //Set email into cookies for displaying into login inputfield
                setcookie('display_email', $this->getRequest()->getParam('email'), time() + 3600*24*30, '/'); <-- not working
                Zend_Session::rememberMe(186400 * 14); <-- not working
                Zend_Auth::getInstance()->getStorage()->write($user); <-- not working

                $user->sendSignUpEmail(); <-- i'm receiving this email
                $this->getHelper('redirector')->gotoRoute(array(), 'invite');                   
                return;
            }
        }
    }
    $this->view->signupForm = $signupForm;

Вот еще один способ, который я делаю, но все еще не работает на IE:

public function signUpAction()
{

    $users = new Application_Model_DbTable_Users();
    $signupForm = new Application_Form_UserSignUp();
    if ($this->getRequest()->isPost())
    {
        $firstname = $this->getRequest()->getParam('first_name');
        $lastname = $this->getRequest()->getParam('last_name');
        $email = $this->getRequest()->getParam('email');

        if ($signupForm->isValid($this->getRequest()->getParams()))
        {
            $user = $this->_helper->model('Users')->createRow($signupForm->getValues());

            $user = array('email' => $email, 'first_name' => $firstname, 'last_name' => $last_name);
            $users->insert($user);
            Zend_Session::rememberMe(186400 * 14);
            Zend_Auth::getInstance()->getStorage()->write($user);
            $this->_redirect('invite');
        }
    }
    $this->view->signupForm = $signupForm;

1 ответ

Попробуйте использовать session_write_close перед вызовом перенаправления. Или я думаю, что Zend имеет эквивалент, см.: Zend_Session::writeclose

Единственное, что приходит на ум (с IE, являющимся единственным браузером, доставляющим вам неприятности), это политика P3P. Посмотрите на пост Талхи здесь: проблема Zend Sessions с IE8

Другие вопросы по тегам