Все еще не удалось заставить его работать после публикации этой ссылки: Zend Framework session lost
У меня есть эта форма регистрации, которая позволяет пользователям регистрировать и перенаправлять их прямо на свои страницы. Все работают отлично в каждом браузере, кроме INTERNET EXPLORER .
Я пробовал разные способы, но до сих пор не могу заставить его работать. После того, как пользователь будет сохранен в базе данных, сеанс не будет сохранен. Но если я выберу сохранение пользователя, сеанс и файлы cookie могут быть сохранены.
Вот код:
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;
Попробуйте использовать session_write_close
перед вызовом перенаправления. Или я думаю, что у Zend есть эквивалент, см .: Zend_Session :: writeclose
Только другая вещь, которая приходит на ум (с IE, являющимся единственным браузером, дающим вам проблемы) является политикой P3P. Посмотрите на сообщение Talha здесь: проблема с Zend Sessions с IE8