Проблема, с которой я сталкиваюсь, заключается в том, что для моей формы входа мне нужно дважды войти в систему для регистрации, но только в Chrome (моя версия 4.0.249.89) и Opera (моя версия – 10.10).
Вот код, который я тестировал:
Страница авторизации:
session_start ();
$_SESSION['user_id'] = 8; $_SESSION['user_name'] = 'Jim'; session_write_close(); header('Location: http://www.my-domain-name.com/'); exit();
Главная страница:
session_start();
session_start();
if (isset ($ _ SESSION ['user_id']))
{
echo "Вы вошли в систему!";
}
еще
{
echo «Вы не вошли в систему!»;
}
Страница выхода:
session_start(); session_unset(); session_destroy(); header('Location: http://www.my-domain-name.com/ '); exit();
В настоящее время, при новой загрузке без файлов cookie, если я перейду на my-domain-name.com/login/, он перенаправит на домашнюю страницу и скажет: «Вы не вошли в систему!». но если я пойду туда снова, он скажет: «Вы вошли в систему!». Есть идеи?
Спасибо за вашу помощь.
Попробуйте добавить sleep(2);
перед выпуском заголовка перенаправления; что скажет вам, действительно ли это ошибка в вашем коде, или если данные сеанса просто не записываются в файл достаточно быстро.
У меня такая же проблема. Я просто удалил www. в разделе заголовка.
Тогда это сработало для меня. Это будет выглядеть так: header ('Местоположение: http://my-domain-name.com/ ');
Ваш код, как представлено, кажется, что он вызовет бесконечный цикл переадресации с домашней страницей, вызывающей session_start (), установив файл cookie и поручив браузеру загрузить домашнюю страницу. Есть ли какая-то логика в коде, представленном здесь?