![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
здравствуйте! есть механизм аутентификации пользователя для внутр сети. при правильной аутентификации создается сессия, которая живет до нажатия пользователем кнопки выйти. после этого хоть нажатие на кнопку в браузере обновить, хоть переход на предыдущую страницу - выкидывает на пустую страницу. но если вход был правильный потом выход правильный при новом запуске приложения вход на страницу пользователя происходит автоматически, без ввода пароля и логина. это ошибка. подумал что проблема в кешировании страницы, попытался устранить глюк следуя шагам, указанным на сайтах http://webo.in/articles/all/http-caching/
http://www.codenet.ru/webmast/php/caching.php#cache http://xpoint.ru/forums/programming/server...read/4908.xhtml но, к сожалению воз и ныне там. что с этим делать? Добавлено через 3 минуты и 18 секунд да, механизм аутентификации, создан без помощи нтмл-тегов, он получает ответы о правильности непосредственно от браузера и сервера и через бд мускл. т.е. в коде аутентификации есть прописаны только вызовы заголовков
|
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
Как создается сессия? Что значит выход правильный? Как он происходит? |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
Казалось бы, при чем здесшь кэширование...
|
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
аутентификация верна если логин и пароль верный - здесь загружается рабочая область пользователя и сессия равна его ид, при завершении работы пользователь должен нажать ссылку выйти(здесь происходит session_destroy();). и вот тут возникает проблема - пользователь закрывает браузер, идет занимается своими делами, снова открывает браузер, прописывает адрес в строке запроса браузера и здесь снова должна произойти аутентификация- ан нет!, пользователь снова попадает на свою рабочую область. а если второй раз с его рабочего места зайдет другой пользователь и наделает неприятностей?
2Ипатьевпри чем здесшь кэширование? может и не в кешировании дело? тогда в чем? |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
зачем? |
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
и unset($PHP_AUTH_PW);
unset($PHP_AUTH_USER); и session_destroy() не проходят зачем? - чтоб пользователь аутентифицировался заново. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
Eсли вы не заметили, то после session_destroy() пользователю НЕ приходится аутентифицировался заново
в общем, если вы не понимаете, что делаете, то лучше сделать "с помощью нтмл-тегов" |
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
2 Ипатьев я понимаю что делаю, иначе бы не спрашивал. спрашивая надеялся на совет, через теги делать не могу(требование в тз
![]() |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
||||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
у меня инструкция распечатанная с принтскринами подобного приложения заказчик хочет так же.то есть в експлорере это окошко с ключиками, в виндовс 7 с цветочком красным и т.д - эти окно стандартные при вызове заголовков. unset($PHP_AUTH_PW); пробую хоть что-то.
|
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
да не против. пробуйте.
только не говорите тогда, что что понимаете. выберите что-то одно. |
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
2 Ипатьев я пришел за помощью, а не одобрением. если есть что сказать по делу - говорите!
Добавлено через 42 секунды и каждый суслик в поле агроном |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
Я написал. Два раза. Я то-то не заметил повышенного интереса к техническим вопросам.
Вас больше интересовало объяснить всем, как много вы понимаете. |
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
вовсе нет. технический вопрос - как же тогда убить сессию в данном случае(если session_destroy() и unset($PHP_AUTH_PW))? что писать вместо PHP_AUTH_PW? уже пробовал $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] - все без изменений?
Добавлено через 1 минуту и 38 секунд если Вы(Ипатьев) считаете что проблема в том что я чего-то не знаю, будьте добры, скажите конкретно в чем беда? Добавлено через 1 минуту и 59 секунд и что нужно знать |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
Знать нужно очень много. протокол НТТР в целом и механизм (несложный) НТТР авторизации в частности. Чтобы хотя бы не возникало желания делать unset(PHP_AUTH_*)
Технический вопрос - зачем убивать сессию. И вообще, и - особенно - в данном конкретном случае. Это раз. Техническая ремарка: Если пользователь ставит галочку "запомнить пароль" в этом окошке, то он входит точно так же, несмотря вообще ни на какие наши желания. Техническая рекомендация вам придется очень попотеть, чтобы сделать этого франкенштейна из сессий и НТТР авторизации. Поэтому я настоятельно рекомендую сделать по-человечески, на одних сессиях. Иначе может совсем не получиться. Только если придет Питлорд и все распишет ![]() |
|||
|
||||
Zzet |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.6.2009 Репутация: нет Всего: нет |
2 Ипатьев - сделать по-человечески, на одних сессиях, значит без заголовков? буду думать, спасибо
|
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
думать тут нечего.
так никто не делает. делают или на сессиях, или на заголовках. причем в последнем случае будут проблемы с повторным заходом все равно. собственно и здесь проблема была именно в этом. сессию убили, но браузеру-то вы не сказали, что сеанс окончен, все свободны. |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
HTTP authentication with PHP
|
||||
|
|||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
sTa1kEr, осталось узнать, в какой момент этот волшебный код запускать ;-)
|
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
||||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
проблема в том, что в данном конкретном случае этот код не поможет.
поскольку авторизация делается сессиями. |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Отнюдь. Это своего рода решение как сделать "unset($PHP_AUTH_PW)", которое так искал автор. Т.е. для logout'а ему достаточно выдать ответ 401, или сделать редирект на страницу с авторизацией. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
ну вот об этом и речь.
я же и пишу - весь вопрос в том, когда этот волшебный код запускать. не в момент логаута же |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
||||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
тогда у юзера вылезет окно авторизации, и юзер не будет знать, что с ним делать
это не совсем похоже на логаут, как мне кажется ![]() |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Почему-же? Он сделал logout, стал не авторизованным пользователем и по этому ему предлагают авторизоваться вновь. Так часто делают и в классическом механизме, редиректят на форму с авторизацией. И потом кнопка "Cancel" там не спроста. Это сообщение отредактировал(а) sTa1kEr - 17.12.2009, 17:42 |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 0 Всего: 37 |
одно дело - страница сайта с формой авторизации. и ссылками в с любой раздел сайта
совсем другое - мерзкое модальное окно, которое пока не закроешь, никуда не попадешь и выдавать его надо только для ввода пароля, разумеется. для чего состояние - онлайн или оффлайн - придется писать в базу. |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Ну мерзкое оно или нет решать ТС, раз уж он решил использовать этот способ ![]() В общем да, именно для этого авторизация посредством HTTP протокола и нужна. Что бы либо разрешить доступ ко всему ресрсу, либо не разрешить. А уж устраивает это ТС или нет мы можем узнать от него самого. Добавлено через 1 минуту и 50 секунд Т.е. тут весь вопрос в юзабилити, если ТС устраивает такое поведение сайта, то флаг ему в руки. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |