Пропускай все через сердце
Здравствуйте.
Не знаю, как грамотнее объяснить пробелему.
Делаю регистрацию и авторизацию.
Возникает небольшой баг с авторизацией.
Пользователь ввел логин и пароль в формочке, его перенаправили к обработчику, обработчик сообщил, "Добро пожаловать Вам".Все замечательно, меня узнали.
И потом при возврате на другие страницы, не сразу выводится сообщение "вы опознаны как ***".
Т.е. я вернулась на сайт от обработчика, меня видят как Гостя. Дважды перешла по любым ссылкам - и бац, меня уже опознают под моим логином.
С чем это может быть связано и как решить эту проблему?
Буду благодарна за подсказки)
Если надо, могу приложить код)
Не знаю, как грамотнее объяснить пробелему.
Делаю регистрацию и авторизацию.
Возникает небольшой баг с авторизацией.
Пользователь ввел логин и пароль в формочке, его перенаправили к обработчику, обработчик сообщил, "Добро пожаловать Вам".Все замечательно, меня узнали.
И потом при возврате на другие страницы, не сразу выводится сообщение "вы опознаны как ***".
Т.е. я вернулась на сайт от обработчика, меня видят как Гостя. Дважды перешла по любым ссылкам - и бац, меня уже опознают под моим логином.
С чем это может быть связано и как решить эту проблему?
Буду благодарна за подсказки)
Если надо, могу приложить код)
Да с чем угодно. Все зависит от реализации сайта. Что первое в голову приходит, без дополнительной инфы, кеш браузера или сайта (неправильно настроенный).
Тоже новичок в этом деле)
Одно дело, если бы вообще не срабатывало, другое - что не сразу...
Сайт ты писала ?
Регистрацию делала правда по статье в инете, но видоизменяя немного, как мне надо.
сейчас покажу код.
читать дальше
читать дальше
Вот эти джаваскрипты добавяла чисто в экспериментальных целях.
2) Сессия-то запускается на страницах с меню?
3) mysql_query("SELECT * FROM users WHERE login='$login'",$db) - тут SQL-инъекция :)
1. history.back() - это я экспериментировала просто, без него тоже не работало.
if (!empty($_SERVER['HTTP_REFERER']))
header('Location: '.$_SERVER['HTTP_REFERER']);
вот так у меня есть при выходе и закрытии сессии, отлично работает.
я бы и тут поставила, только заголовки отправляются в начале и я не знала, где их правильно поставить, если честно.
2. на всех страницах запускается сессия, а там уже инклудятся блоки меню.
все-то работает, только вот не сразу.
я вернулась назад так или иначе. один раз нажала любую ссылку - я гость. второй раз нажала ссылку - я гость. третий раз нажала ссылку - меня опознали.причем ссылки нужно менять.
3.главное, что работает, мне больше в учебных целях.
но над безопасностью я еще поработаю)
Если у хостера запросы идут через прокси, он может неверно кэшировать (mod_proxy иногда этим отличается).
В качестве предположения, попробуйте сделать вызов session_cache_limiter("nocache") перед стартом сессии (везде, где она запускается).
(Если сработает, то сработает не сразу, а попытки этак с третьей.)
скажите, а как правильно вернуться из обработчика?
если я возвращаюсь по ссылке на главную - то все по-прежнему.
А если же я нажимаю на кнопку джаваскрипт, то возвращается на предыдущую страницу, меня все еще не узнают. зато по нажатию первой ссылки - уже все в порядке.
т.е. я думаю, помогло, только неправильное возвращение.
Страницы, на которых написана фраза про гостя, кэшируются, и при следующем заходе на них же посетитель видит старую версию вместо новой. После нескольких последовательных запросов кэш сбрасывается, и появляется новая версия.
Ну, по крайней мере, это предположение мне кажется самым разумным.
скажите, а как правильно вернуться из обработчика?
Зависит от того, что вы хотите показать пользователю... Вам совсем правильно или вариант, который будет адекватно выглядеть в учебном проекте начинающего? %)
Например,
header("Location: " . ($_SERVER['HTTP_REFERER'] ? $_SERVER['HTTP_REFERER'] : './index.php'));
?>
Или так:
<a href = "index.php"> Главная </a>
<?php if ($_SERVER['HTTP_REFERER']) { ?><br /><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Назад/Go back</a><?php } ?>
да, я с вами согласна, это самое логичное объяснение.
но все равно странно, что так вышло.
над редиректом еще поработаю, пока что-то не получается. в смысле, чтобы инфа о посетителе обновлялась.
и опять что-то сбилось, потому как опять меня видят как Гостя....
Попробуй в своем index.php в самом верху сделать:
Если не поможет и это - стучи в асю/юмыло, будем пробовать разбираться, а потом напишем сюда, в чем было дело.
SpiritEagle увы, ваш вариант не помог.
я еще завтра помозгую, если не выйдет, вечером напишу, спасибо большое.