|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.04.2009, 22:09 | #11 |
Форумчанин
Регистрация: 18.03.2009
Сообщений: 101
|
Ладно, с этими сессиями и кукями попозже разберусь. С defined в посте #5 надо разобраться. В принципе работает, но если я сделаю что-либо, например добавлю или удалю запись из БД, то опять меня выкидывает. Наверное потому, что defined после какого-то действия начинает получать пустое значение?
|
12.04.2009, 22:12 | #12 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Когда пользователь xxx вводит логин/пароль, я проверяю наличие этого логина и пароля в БД. Если всё ок, то я создаю некий уникальный хеш, который записываю пользователю в куки.
PHP код:
Переменная $hash также записывается в БД и принадлежит пользователю xxx. Когда пользователь обновляет страницу, то хеш из его куки сравнивается с хешем в БД. Если всё ок - значить пользователь уже прошёл проверку и может продолжать. Через час куки исчезает и пользователю нужно будет ввести пароль ещё раз. Также в БД есть пометка что пользователь залогинился (то есть был создан новый хеш) в такое-то время. При проверке хеша также происходит проверка метки времени. Если метка старше чем 1 час, то хеш удаляется насильно, а у пользователя спрашивается логин/пароль снова. Таким образом если кто-то украл данный хеш у пользователя, он не сможет заходить под ним вечно.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
12.04.2009, 23:00 | #13 |
Форумчанин
Регистрация: 18.03.2009
Сообщений: 101
|
Так.. То есть надо добавить ещё одно поле для хэша и метки времени в БД? И всь код надо писать в самой админке после проверки данных?
А если пользователь выйдет, и потом опять войдёт, то ведь по идее хэш ему новый выдасться, а в БД ещё старый... |
12.04.2009, 23:58 | #14 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
Когда выдаётся новый хеш, он автоматом должен заменять старый. То есть обновлять.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
13.04.2009, 00:06 | #15 |
Форумчанин
Регистрация: 18.03.2009
Сообщений: 101
|
Ну вот, наляпал вот такой код.
PHP код:
Последний раз редактировалось SwiP; 13.04.2009 в 00:11. |
13.04.2009, 04:17 | #16 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
/me бьёт себя ладонью по лицу.
Сорри, тебе нужно всё-таки разобраться с алгоритмами авторизации. Читал какую-нибудь книжку по теме? Вообще стандартный алгоритм авторизации знаешь? Последовательность действий там.. Попробуй сначала на бумажке нарисовать общение сервер-клиент. Кто кому что и главное для чего передаёт. Сначала пользователь вводит логин/пароль. Сервер сверяет всё ли ок. Если всё ок - генерирует хороший, трудноугадываемый хэш (1 вариант из 1000 я вручную угадаю), заносит этот хеш в базу вместе с временем заноса. Создаёт куки у клиента на 1 час. Вариант а: Клиент приходит менее чем через час. Куки ещё живы, хеш тоже жив. Клиент передаёт серверу куки с хешем (для верности можно ещё логин в куки записать, но это необязательно). Сервер сверяет есть ли такая пара логин/хеш в базе. Если есть - даёт доступ к админке. Вариант б: Клиент приходит позже чем через час. Куки умерли. Сервер запрашивает у клиента логин/пароль. Клиент вводит логин/пароль, сервер проверяет всё ли ок. Если всё ок - сервер создаёт новый хеш и заносит его в базу (обновляет старый) вместе с меткой времени. Хеш можешь создать из: логин+название сайта+рандомный набор символов - всё это в md5. Вот тебе сложный хеш.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
13.04.2009, 08:37 | #17 | |
Пользователь
Регистрация: 11.04.2009
Сообщений: 64
|
Емм... а если человек зайдет на сайт. Запишется Хеш...
потом нажмет кнопочку Logout?? Что дальше, снова зайти в течении часа нельзя будет? Вы не забудьте про стирание Хеша после выхода, это раз. а второе, это глупо делать так.... Цитата:
|
|
13.04.2009, 13:49 | #18 |
Antimoderаtoris
Участник клуба
Регистрация: 08.02.2008
Сообщений: 1,251
|
При логауте удаляются куки и обнуляются хеш и метка времени в базе. Это как бы по умолчанию должно быть так.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
|
13.04.2009, 15:37 | #19 |
Форумчанин
Регистрация: 18.03.2009
Сообщений: 101
|
Спасибо за критику. Вообщем кое как я это сделал, но проблема есть, куки не удаляются после истечения времени, а так и продолжают висеть!
Для проверки я поставил время жизни куки и тех данных в БД не час а минуту. Выхожу со страницы, но кука так и остаётся висеть. Поставил команду echo $var1; которая показывает содержимое куки. Она так и остаётся неизменной после обновления страницы, или же по истечению времени ПэЭс: Но хотя бы реализовать главную задачу, запретить доступ без авторизации удалось Последний раз редактировалось SwiP; 13.04.2009 в 16:22. |
14.04.2009, 14:13 | #20 |
Форумчанин
Регистрация: 18.03.2009
Сообщений: 101
|
Есть ещё один вопрос. Например пользователь выбрал сессию на 1 час. Он поработал 10 минут и нажал на кнопку Выход. (я её реализовал так: она заменяет текущий куки на такой же с таким же именем, но пустым значением и временем действия 2 секунды).
Если он нажал кнопку выход и захочет опять войти, то ему будет отказано, т.к времени не прошёл час, а новая кука уже была создана, чей хэш отлмчается от оного, что в базе данных. В итоге он сможет зайти, только через час. Что делать в таком случае? Может, если времени прошло недостаточно, то есть меньше часа, то будет создаваться кука со значением хэша из БД? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка правильности ввода. | Whiplash | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 14.11.2008 18:00 |
Проверка правильности ввода символов | LLIypLLIyH | Помощь студентам | 7 | 22.07.2008 19:30 |
Проверка ввода | Panda | Помощь студентам | 2 | 08.07.2008 19:23 |
проверка ввода данных в форму | @Simpson | JavaScript, Ajax | 1 | 12.11.2007 02:17 |
Проверка ввода символов | Raz0r | Помощь студентам | 2 | 06.11.2007 14:16 |