Приходится войти дважды. Сессии PHP и проблемы со входом в Chrome и Opera - PullRequest
2 голосов
/ 09 марта 2010

Проблема, с которой я сталкиваюсь, заключается в том, что для моей формы входа в систему мне необходимо дважды войти в систему, чтобы сеанс зарегистрировался правильно, но только в 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();

Домашняя страница:

<code>
session_start();</p>

<p>if ( isset($_SESSION['user_id']) )
{<br>
    echo "You are logged in!";<br>
}
else
{<br>
    echo "You are NOT logged in!";<br>
}

Страница выхода из системы:

<code>
session_start();
session_unset();
session_destroy();
header('Location: <a href="http://www.my-domain-name.com/" rel="nofollow noreferrer">http://www.my-domain-name.com/</a>');
exit();

В настоящее время, при новой загрузке без файлов cookie, если я зайду на my-domain-name.com/login/, он будет перенаправлен на домашнюю страницу и скажет: «Вы НЕ авторизованы!» но если я пойду туда снова, он скажет: «Вы вошли!». Есть идеи?

Спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 09 марта 2010

Попробуйте добавить sleep(2); перед выдачей заголовка перенаправления;это скажет вам, действительно ли это где-то ошибка в вашем коде, или данные сессии просто не записываются в файл достаточно быстро.

1 голос
/ 31 мая 2014

У меня такая же проблема, как эта. Я просто удалил www. в разделе заголовка.

Тогда у меня все заработало. Это будет выглядеть так: header ('Location: http://my -domain-name.com / ');

0 голосов
/ 09 марта 2010

Ваш код, как представлено, кажется, что он вызовет бесконечный цикл перенаправления с домашней страницей, вызывающей session_start (), установкой cookie и инструктирующей браузер загрузить домашнюю страницу. Есть ли какая-то логика в коде, представленном здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...