X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> регистрация (логика)
Licoric
Licoric
Topic Starter сообщение 12.7.2010, 19:40; Ответить: Licoric
Сообщение #1


Собственно для начала пытаюсь понять, как оно вообще работает (без готового кода, дабы было проще понять).
На каждой странице, где есть обращение к логину и паролю вверху ставится "session start". В нужном месте страницы по коду идет обращение к кукам. Если нет записей - чел не зарегистрирован. Если есть, то делается запрос к таблице юзеров и смотрится сколько записей удовлетворяют условию, где логин/пасс из кук равны логин/пасс в таблице. Если больше 1, то чел залогинен.
Далее на странице можно делать запросы, основываясь на данных в куках (типа логина и пароля).

Осталось к этому прикрутить проверки на безопасность, фильтры и прочее, что заставляет "тру-одмина" не спать ночами ;)

ps в готовый код буду смотреть только после того, как освою все сам. Ну и глядя на него исправлять свои ошибки.

Для начала этот алгоритм. Верен или нет. Что тут не так?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 12.7.2010, 20:11; Ответить: Mulder_hb
Сообщение #2


(Licoric @ 12.7.2010, 22:40) *
Если есть, то делается запрос к таблице юзеров и смотрится сколько записей удовлетворяют условию, где логин/пасс из кук равны логин/пасс в таблице. Если больше 1, то чел залогинен.

А почему больше одного? Должно быть строго 1.

Безопасность:
любую куку, устанавливаемую пользователю, нужно шифровать.
защита от подмены куки. Тут все зависит насколько вы параноидальны: от хранения в кукисах только ид сессии минут 20 до хранении определенного проверочного кода.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
Topic Starter сообщение 12.7.2010, 23:12; Ответить: Licoric
Сообщение #3


Уже лучше)
"Текстовая" блок-схема правильная?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 13.7.2010, 20:03; Ответить: Mulder_hb
Сообщение #4


(Licoric @ 12.7.2010, 22:40) *
На каждой странице, где есть обращение к логину и паролю вверху ставится "session_start".

Тут надо проверять. Если сессия уже есть, то session_start(), а если нет, то создастся новая. Но вам это не надо, вам нужно проверять если или нету.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
Topic Starter сообщение 13.7.2010, 21:27; Ответить: Licoric
Сообщение #5


А если я в шапку запихну вывод логина и буду ее инклюдить на каждой странице? Тогда и сессию можно вверх запихать и забыть про это получается. Так?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 13.7.2010, 23:22; Ответить: Mulder_hb
Сообщение #6


Да так. Так сделано к примеру в дле.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
Topic Starter сообщение 15.1.2013, 0:13; Ответить: Licoric
Сообщение #7


Покуда выпадал - апаю тему авторизации на сессиях.

1) session_start();
2) проверка в переменной сессии пары логин и пароль. Пароль, как я понимаю, хранится в не шифрованном виде. Или в шифрованном? Юзер вводит пасс и его, прежде чем пихнуть в сессию надо шифровать или нет?
2а) В сессиях пусто. Выводим форму авторизации.
2б) В сессиях не пусто. (есть пара для сверок). Берем и сверяем с таблицей текущие данные: 1) либо выводим форму авторизации (если данных в таблице нет или они не верны), либо 2) выводим "%username" (если данные в таблице есть в строго одном количестве)
3) при обращении к зашифрованной странице проверяем данные в сессии, сравниваем их с базой, Если катят, то показываем контент. Если нет - die();
4) отдельный файл для дестроя сессии.
*) получается каждый раз при проверке корректности логина/пароля надо коннектиться к базе? не дофига ли?

Я гуглил скрипты для этого (посмотреть готовые варианты). Там куча файлов (штук по 5-8 разных) и все настолько подробно написано, что я запутываюсь больше, чем вижу наглядную картину этой ситуации.
Пока писал сей псто подумал о том, что для этой регистрации нужно 2 файла, грубо говоря. Один инклюдим туда, где находится форма авторизации. Там либо она выводится, либо данные, подтянутые из таблицы с помощью данных в сессии (инфа о юзере). При показе закрытой части сайта прост осмотрим сессию.
Второй файл, собственно, дестрой (Logout.php какой нибудь).

Почему же я тогда не встречал сего скрипта, который собран по образу и подобию моего текстового описания?
Ну и это... Как его... Я все правильно написал?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 15.1.2013, 0:35; Ответить: alexdrob
Сообщение #8


(Licoric @ 15.1.2013, 03:13) *
Юзер вводит пасс и его, прежде чем пихнуть в сессию надо шифровать или нет?

Вопрос. Зачем? Зачем вообще хранить пароль в сессии?
Храните ID юзера если он вошел. Если нужно достать юзера из базы, то просто выбираете по ИД.

(Licoric @ 15.1.2013, 03:13) *
если данные в таблице есть в строго одном количестве

Собственно при выборке по ID оно и будет 0 или 1, не больше :)

(Licoric @ 15.1.2013, 03:13) *
при обращении к зашифрованной странице проверяем данные в сессии, сравниваем их с базой,

Вы про уровень доступа? Или про просто авторизацию?
Если про уровень доступа, то просто при выборке из базы по ИД юзера, выбирайте группу. Можно было бы хранить даже в сесии и не выбирать, но вдруг юзер олнлайн а группа изменилась?
То есть просто при выборке юзера по ИД из сессии тяните каждый раз группу.

Если же Вы про проверку авторизован ли юзер, то всё просто
[PHP]function is_auth() { return isset($_SESSION['user_id']) && $_SESSION['user_id'] > 0; }[/PHP]


(Licoric @ 15.1.2013, 03:13) *
отдельный файл для дестроя сессии.

Ну отдельный или нет это уж зависит от того как вы написали сайт :) Если у вас есть некое подобие контроллёров из MVC, то файл скорей всего будет не отдельный.


(Licoric @ 15.1.2013, 03:13) *
получается каждый раз при проверке корректности логина/пароля надо коннектиться к базе? не дофига ли?

Ещё раз повторю, не надо каждый раз проверять пароль и логин. Вы выбираете просто по ИД юзера и заполняете какой то объект, например $user данными из бд.
А если каждый раз не коннектиться, то сложно сразу после ихменения группы, статуса, или имени юзера, отобразить это на сайте, например Вы его забанили, а он продолжает ходить по сайту, так как данные из бд не тащил.
Да и мускл держит тысячи запросов в секунду.



(Licoric @ 15.1.2013, 03:13) *
Я гуглил скрипты для этого (посмотреть готовые варианты).

Я видел кучу скриптов авторизации, там столько бреда как правило встречается :)


(Licoric @ 15.1.2013, 03:13) *
Пока писал сей псто подумал о том, что для этой регистрации нужно 2 файла, грубо говоря. Один инклюдим туда, где находится форма авторизации.

Погуглите лучше что такое MVC, давно уже перешли почти все на ООП, MVC, и автозагрузку классов.

(Licoric @ 15.1.2013, 03:13) *
Почему же я тогда не встречал сего скрипта, который собран по образу и подобию моего текстового описания?

Скорей всего потому, что давно все перешли на MVC подобные системы и готовые или самописные фреймворки.
Все скрипты что в интернете лежат из кучи файлов для аторизации и инклуда друг в друга, с сохранением паролей в куках, это всё переделанные скрипты Попова, теми кто только учит программирование, и не понимает его, просто переделывают скрипты Попова, типа "Вот я сделал сам, нате, пользуйтесь"...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 15.1.2013, 9:44; Ответить: Arks
Сообщение #9


лучше вообще не использовать session, дабы не замусоривать файловую систему. Сам php как-то неохотно очищает старые сессии, проверено. Совсем неплохо хранить сессии в БД в сериализованном виде, т.к. Вы все равно лезете туда для проверки авторизации каждый раз.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
сообщение 15.1.2013, 16:20; Ответить: Alcorn
Сообщение #10


(alexdrob @ 15.1.2013, 03:35) *
А если каждый раз не коннектиться, то сложно сразу после ихменения группы, статуса, или имени юзера, отобразить это на сайте, например Вы его забанили, а он продолжает ходить по сайту, так как данные из бд не тащил.


А если очищать сессию юзера при том же бане? Взяли строку конкретного юзера, положили как объект в сессию и ходим с ней (весит копейки), зато вывод логина, емейла и прочее - без запросов к бд. Сессия закончилась - объект автоматом удалился (не надо чистить таблицы в бд от старых сессий - это к комментарию выше). При изменении записи в строке бд конкретного юзера - сбрасываем его переменные сессии, юзер автоматом разлогинивается. Получение активных сессий всех юзеров и изменение значений конкретных сессионных переменных делал в .net, но там была немного другая задача. А данный вариант - просто размышления.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыПрогон по отборным профилям(Тиц,PR) + Регистрация в каталогах
Dle сайты,Русские\Зарубежные форумы Тиц 10>***
389 Taylor 236736 22.12.2021, 20:43
автор: 3rim
Открытая тема (нет новых ответов) Регистрация аккаунтов - нужен работник
4 wep 8882 9.10.2021, 15:14
автор: xDanielx
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыРегистрация в каталогах фирм и справочниках.
20 anykey13 11399 11.7.2021, 15:17
автор: anykey13
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыРегистрация Вашего сайта (профиля,DLE сайты,подписи на форумах,постинг Тиц 10> , ПР 1>)
343 kaartes 183702 8.4.2020, 17:39
автор: kukla
Открытая тема (нет новых ответов) Требуется интернет-пиарщик - для распростанения инфы о сайте на площадках интернета (регистрация в каталогах, отзывы, статьи)
Нужен специалист на постоянную подработку !!! 5 000 руб./м
4 Paul01 2351 10.10.2019, 2:54
автор: Paul01


 



RSS Текстовая версия Сейчас: 18.4.2024, 4:38
Дизайн