Помощник
|
регистрация (логика) |
Licoric
|
Сообщение
#1
|
||
|
|
||
|
|||
Mulder_hb |
12.7.2010, 20:11;
Ответить: Mulder_hb
Сообщение
#2
|
|
Если есть, то делается запрос к таблице юзеров и смотрится сколько записей удовлетворяют условию, где логин/пасс из кук равны логин/пасс в таблице. Если больше 1, то чел залогинен. А почему больше одного? Должно быть строго 1. Безопасность: любую куку, устанавливаемую пользователю, нужно шифровать. защита от подмены куки. Тут все зависит насколько вы параноидальны: от хранения в кукисах только ид сессии минут 20 до хранении определенного проверочного кода. |
|
|
Licoric
|
Сообщение
#3
|
|
Уже лучше)
"Текстовая" блок-схема правильная? |
|
|
Mulder_hb |
13.7.2010, 20:03;
Ответить: Mulder_hb
Сообщение
#4
|
|
|
|
|
Licoric
|
Сообщение
#5
|
|
А если я в шапку запихну вывод логина и буду ее инклюдить на каждой странице? Тогда и сессию можно вверх запихать и забыть про это получается. Так?
|
|
|
Mulder_hb |
13.7.2010, 23:22;
Ответить: Mulder_hb
Сообщение
#6
|
|
Да так. Так сделано к примеру в дле.
|
|
|
Licoric
|
Сообщение
#7
|
|
Покуда выпадал - апаю тему авторизации на сессиях.
1) session_start(); 2) проверка в переменной сессии пары логин и пароль. Пароль, как я понимаю, хранится в не шифрованном виде. Или в шифрованном? Юзер вводит пасс и его, прежде чем пихнуть в сессию надо шифровать или нет? 2а) В сессиях пусто. Выводим форму авторизации. 2б) В сессиях не пусто. (есть пара для сверок). Берем и сверяем с таблицей текущие данные: 1) либо выводим форму авторизации (если данных в таблице нет или они не верны), либо 2) выводим "%username" (если данные в таблице есть в строго одном количестве) 3) при обращении к зашифрованной странице проверяем данные в сессии, сравниваем их с базой, Если катят, то показываем контент. Если нет - die(); 4) отдельный файл для дестроя сессии. *) получается каждый раз при проверке корректности логина/пароля надо коннектиться к базе? не дофига ли? Я гуглил скрипты для этого (посмотреть готовые варианты). Там куча файлов (штук по 5-8 разных) и все настолько подробно написано, что я запутываюсь больше, чем вижу наглядную картину этой ситуации. Пока писал сей псто подумал о том, что для этой регистрации нужно 2 файла, грубо говоря. Один инклюдим туда, где находится форма авторизации. Там либо она выводится, либо данные, подтянутые из таблицы с помощью данных в сессии (инфа о юзере). При показе закрытой части сайта прост осмотрим сессию. Второй файл, собственно, дестрой (Logout.php какой нибудь). Почему же я тогда не встречал сего скрипта, который собран по образу и подобию моего текстового описания? Ну и это... Как его... Я все правильно написал? |
|
|
alexdrob |
15.1.2013, 0:35;
Ответить: alexdrob
Сообщение
#8
|
|
Юзер вводит пасс и его, прежде чем пихнуть в сессию надо шифровать или нет? Вопрос. Зачем? Зачем вообще хранить пароль в сессии? Храните ID юзера если он вошел. Если нужно достать юзера из базы, то просто выбираете по ИД. если данные в таблице есть в строго одном количестве Собственно при выборке по ID оно и будет 0 или 1, не больше :) при обращении к зашифрованной странице проверяем данные в сессии, сравниваем их с базой, Вы про уровень доступа? Или про просто авторизацию? Если про уровень доступа, то просто при выборке из базы по ИД юзера, выбирайте группу. Можно было бы хранить даже в сесии и не выбирать, но вдруг юзер олнлайн а группа изменилась? То есть просто при выборке юзера по ИД из сессии тяните каждый раз группу. Если же Вы про проверку авторизован ли юзер, то всё просто [PHP]function is_auth() { return isset($_SESSION['user_id']) && $_SESSION['user_id'] > 0; }[/PHP] отдельный файл для дестроя сессии. Ну отдельный или нет это уж зависит от того как вы написали сайт :) Если у вас есть некое подобие контроллёров из MVC, то файл скорей всего будет не отдельный. получается каждый раз при проверке корректности логина/пароля надо коннектиться к базе? не дофига ли? Ещё раз повторю, не надо каждый раз проверять пароль и логин. Вы выбираете просто по ИД юзера и заполняете какой то объект, например $user данными из бд. А если каждый раз не коннектиться, то сложно сразу после ихменения группы, статуса, или имени юзера, отобразить это на сайте, например Вы его забанили, а он продолжает ходить по сайту, так как данные из бд не тащил. Да и мускл держит тысячи запросов в секунду. Я гуглил скрипты для этого (посмотреть готовые варианты). Я видел кучу скриптов авторизации, там столько бреда как правило встречается :) Пока писал сей псто подумал о том, что для этой регистрации нужно 2 файла, грубо говоря. Один инклюдим туда, где находится форма авторизации. Погуглите лучше что такое MVC, давно уже перешли почти все на ООП, MVC, и автозагрузку классов. Почему же я тогда не встречал сего скрипта, который собран по образу и подобию моего текстового описания? Скорей всего потому, что давно все перешли на MVC подобные системы и готовые или самописные фреймворки. Все скрипты что в интернете лежат из кучи файлов для аторизации и инклуда друг в друга, с сохранением паролей в куках, это всё переделанные скрипты Попова, теми кто только учит программирование, и не понимает его, просто переделывают скрипты Попова, типа "Вот я сделал сам, нате, пользуйтесь"... |
|
|
Arks |
15.1.2013, 9:44;
Ответить: Arks
Сообщение
#9
|
|
лучше вообще не использовать session, дабы не замусоривать файловую систему. Сам php как-то неохотно очищает старые сессии, проверено. Совсем неплохо хранить сессии в БД в сериализованном виде, т.к. Вы все равно лезете туда для проверки авторизации каждый раз.
|
|
|
Alcorn |
15.1.2013, 16:20;
Ответить: Alcorn
Сообщение
#10
|
|
А если каждый раз не коннектиться, то сложно сразу после ихменения группы, статуса, или имени юзера, отобразить это на сайте, например Вы его забанили, а он продолжает ходить по сайту, так как данные из бд не тащил. А если очищать сессию юзера при том же бане? Взяли строку конкретного юзера, положили как объект в сессию и ходим с ней (весит копейки), зато вывод логина, емейла и прочее - без запросов к бд. Сессия закончилась - объект автоматом удалился (не надо чистить таблицы в бд от старых сессий - это к комментарию выше). При изменении записи в строке бд конкретного юзера - сбрасываем его переменные сессии, юзер автоматом разлогинивается. Получение активных сессий всех юзеров и изменение значений конкретных сессионных переменных делал в .net, но там была немного другая задача. А данный вариант - просто размышления. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Прогон по отборным профилям(Тиц,PR) + Регистрация в каталогах Dle сайты,Русские\Зарубежные форумы Тиц 10>*** |
389 | Taylor | 236784 | 22.12.2021, 20:43 автор: 3rim |
|
Регистрация аккаунтов - нужен работник | 4 | wep | 8885 | 9.10.2021, 15:14 автор: xDanielx |
|
Регистрация в каталогах фирм и справочниках. | 20 | anykey13 | 11408 | 11.7.2021, 15:17 автор: anykey13 |
|
Регистрация Вашего сайта (профиля,DLE сайты,подписи на форумах,постинг Тиц 10> , ПР 1>) | 343 | kaartes | 183725 | 8.4.2020, 17:39 автор: kukla |
|
Требуется интернет-пиарщик - для распростанения инфы о сайте на площадках интернета (регистрация в каталогах, отзывы, статьи) Нужен специалист на постоянную подработку !!! 5 000 руб./м |
4 | Paul01 | 2352 | 10.10.2019, 2:54 автор: Paul01 |
Текстовая версия | Сейчас: 23.4.2024, 10:58 |