Zend Framework сеанс потерян
У меня есть форма регистрации, когда пользователь регистрируется, он перенаправляет его на свою страницу. Все отлично работает в Firefox и Chrome, но в Internet Explorer. Похоже, что после сохранения информации о пользователе сеанс завершился, и он не будет перенаправлять пользователя на его страницу.
Как я могу исправить эту проблему в IE?
$user = $this->_helper->model('Users')->createRow($signupForm->getValues());
if ($user->save())
{
Zend_Session::rememberMe(186400 * 14);
Zend_Auth::getInstance()->getStorage()->write($user);
$user->sendSignUpEmail();
$this->getHelper('redirector')->gotoRoute(array(), 'invite');
return;
}
2 ответа
У меня возникла похожая проблема - создать сессию в iframe в IE перед перенаправлением, и это работает для меня: попробуйте включить Zend Action:
$response = $this->getResponse();
$response->setHeader('P3P', 'CP="CAO PSA OUR"', true);
Посмотрите, что делает заголовок ('P3P: CP = "CAO PSA OUR"'); делать?
Вы, кажется, продолжаете публиковать варианты одного и того же вопроса. В вашем коде нет ничего, что могло бы работать по-разному в разных браузерах. Вам нужно отладить это, чтобы увидеть, как далеко заходит IE, что поможет вам определить причину проблемы.
Итак, сделайте отладку, чтобы попытаться ответить на следующие вопросы:
- Есть ли
$user->save()
вернуть истину? (то есть IE входит в оператор if) - Если это входит в если, что в
$user
? Пытатьсяvar_dump($user);exit;
внутри, если посмотреть, что вы получаете - Есть ли
$user->sendSignUpEmail();
позвонить? - Если он попадает в часть перенаправления, какие заголовки отправляются? (Вы должны быть в состоянии проверить это с помощью инструментов разработчика IE)
Если вы тестируете в IE на компьютере, отличном от того, на котором работают браузеры, также проверьте системные часы, так как неправильные дата и время могут привести к немедленному истечению срока сеанса.