Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Не могу создать полноценный механизм авторизации
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
Авторизация происходит по сессии. При пересылке данных через форму скрипту-обработчику происходит проверка пользователя по базе данных и если такой пользователь присутствует, то он авторизовывается, а, при авторизации у него появляется возможность выйти из системы(logout). Проблема заключается в том, что, когда пользователь выходит из системы, при откатке страниц в браузере Opera "назад" на страницу входа при ее обновлении снова появляется регистрация в системе, т.е. данные методом "post" cнова отправляются скрипту-обработчику... Подскажите, пожалуйста, как этого избежать?...
Скрипт 1.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Цитата:
Данные post не передаются при обновлении страницы!
Еще как предеются - правда оявляется окошко точно и вы хоитет отпраит даные заново и если откзаться то напимшет Страница просрочена
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
maxtet
Отправлено: 04 Июля, 2009 - 18:43:54
Новичок
Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009 Откуда: г.Херсон
Помог: 0 раз(а)
algerian, попробуйте свой скрипт-обработчик вставить в следующий блок:
Если бы знать функцию(http-заголовок), которая уничтожает односессионную cookie у клиента. Пробовал выключить у себя прием cookie, session_id менялось постоянно при обновлении страницы. Это говорит о том, что браузер посылает скрипту (при включенном приеме cookie) идентификатор сессии и тот стартует сессию с этим идентификатором. А если перезапустить браузер, то cookie пропадает. Так вот есть ли какой заголовок или функция для удаления этой односессионной cookie при выходе из системы(аутентификации)?
maxtet
Отправлено: 05 Июля, 2009 - 12:14:31
Новичок
Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009 Откуда: г.Херсон
Помог: 0 раз(а)
Попробуй использовать перезагрузку текущей страницы после удаления сессии.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
algerian Уж лучше тогда Header("Location: ".$_SERVER['PHP_SELF']."");
Или на JS перезагрузку страницы сдеать что еще проще
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
algerian
Отправлено: 05 Июля, 2009 - 16:16:21
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
maxtet пишет:
Попробуй использовать перезагрузку текущей страницы после удаления сессии.
algerian Уж лучше тогда Header("Location: ".$_SERVER['PHP_SELF']."";
Или на JS перезагрузку страницы сдеать что еще проще
Я уже пробовал делать перезагрузку страницы, и, к сожалению, снова загруженная страница стоит после той, с которой были отправлены данные POST запросом. Я смотрел как происходит авторизация на IPB со своей стороны, там, если вернуться к странице, откуда отправляются данные, если ее обновить после выхода из системы, загружается страница с предложением пройти регистрацию еще раз.
JustUserR
Отправлено: 05 Июля, 2009 - 18:13:41
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
algerian А может AJAXом сделать чтобы было неповадно возвращаться назад - то есть если пользователя вернется назад то все равно с помощью AJAXа произойдет обновление и аново счивается сессия (Точнее ее отсутсвие) и тогда можно предложить залогиниться заново
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
algerian
Отправлено: 05 Июля, 2009 - 20:12:29
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
JustUserR пишет:
algerian А может AJAXом сделать чтобы было неповадно возвращаться назад - то есть если пользователя вернется назад то все равно с помощью AJAXа произойдет обновление и аново счивается сессия (Точнее ее отсутсвие) и тогда можно предложить залогиниться заново
Есть еще одна проблема - я не знаю JS и AJAX((. Может быть Вы знаете где можно скачать понятную литературу(желательно в формате PDF)?
JustUserR
Отправлено: 05 Июля, 2009 - 20:35:03
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Был у меня на примете один замечательны сайт - http://progbook[dot]ru/ - электронных книг много и все бесплатно
(С) На правах рекламы
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
algerian
Отправлено: 05 Июля, 2009 - 20:54:42
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2009
Помог: 0 раз(а)
JustUserR пишет:
Был у меня на примете один замечательны сайт - http://progbook[dot]ru/ - электронных книг много и все бесплатно
(С) На правах рекламы
Спасибо! Очень ценный ресурс.. Тема будет продолжена скриптом аутентификации;)
snmit
Отправлено: 15 Июня, 2010 - 12:01:48
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
Я кстати, тоже столкнулся с такой проблемой. Opera действительно отправляет повторно данные, если вернуться на неё или обновить.
Выход принудительной перезагрузкой страницы не поможет. Почему? А, что если пользователь ссылку site.ru/logout/ открыл в новой вкладке, а страницу где он находился, просто обновит. Браузер может отправлять повторно данные, если поля содержаться в теги <form> </form>, если использовать просто в теле документа поля input и отправлять их посредством js и ajax, то проблема действительно в чем-то исчезнет.
JustUserR
Отправлено: 16 Июня, 2010 - 11:05:37
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
snmit пишет:
Браузер может отправлять повторно данные, если поля содержаться в теги <form> </form>
Не совсем так поскольку браузер повторно отправляет данные с выдачей соответствующего предупреждения не при запросе самой страницы с POST-формой - а при переходе на страницу которая была сама запрошена POST-методом на основе данных введенных из формы
При этот не обязательно использовать динамическую передачу данных с помощью Iframe/AJAX - поскольку можно просто убрать соответствующую страницу из истории хотя бы путем затирающего перенаправления
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.