[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация
Страницы: 1, 2, 3, 4, 5
RootPM
bestxp

session_start();
// записали данные в переменную
session_write_close();
sleep(100);
echo 'hello i\'m very long operation';


или использовать memcached, но тут нет блокировок на сессию и можно потерять данные. Для авторизации очень подходит, один раз записал - потом только читаем и если нужно уничтожаем.

Или killer8080 вы про другое?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
Если все молчат, значит для авторизации нужно использовать сессии + memcached?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
Вот такой вариант:

Цитата
Записываем id в session (memcached), логин в cookie.

Если имеется сессия, значит авторизирован, в вёрстку логин подставляем из cookie (чтобы не доставать из таблицы user).

Дальше из таблицы блокировок проверяем текущего пользователя.

При добавлении или удалении контента проверяем пару id и логин в таблице user (подстраховка от подбора идентификатора сессии).


Нормальный вариант? Какие будут слабые места?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
killer8080
Цитата (RootPM @ 8.11.2016 - 16:35)
session_start();
// записали данные в переменную
session_write_close();
sleep(100);
echo 'hello i\'m very long operation';


или использовать memcached, но тут нет блокировок на сессию и можно потерять данные. Для авторизации очень подходит, один раз записал - потом только читаем и если нужно уничтожаем.

Или killer8080 вы про другое?

Совершенно верно, если в контексте текущего запроса не требуется ничего сохранять в сессию, дескриптор следует высвобождать сразу после получения данных из сессии. Кстати в PHP7 появилась возможность задавать параметры аргументом в session_start(), и помимо обычных ini параметров есть read_and_close, чтоб не вызывать вручную session_write_close()
session_start([
'read_and_close' => true
]);

Цитата (RootPM @ 9.11.2016 - 15:26)
Если все молчат, значит для авторизации нужно использовать сессии + memcached?

можно и мемкеш, не факт что запросы к мемкешу будут быстрее, чем чтение файла с RAM диска. Можешь поэкспериментировать и сравнить, интересно увидеть результаты тестов :)
Цитата (RootPM @ 13.11.2016 - 11:01)
Если имеется сессия, значит авторизирован, в вёрстку логин подставляем из cookie (чтобы не доставать из таблицы user).

Дальше из таблицы блокировок проверяем текущего пользователя.

вообще не понял смысла этих движений. То есть дергать таблицу юзеров - смертный грех, а таблицу блокировок - это в порядке вещей. Зачем вообще нужна таблица блокировок? Не проще хранить статус юзера в самой таблице users?
RootPM
Цитата (killer8080 @ 15.11.2016 - 22:18)
Не проще хранить статус юзера в самой таблице users?

Согласен

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
Что-то не получается придумать нормальный алгоритм самой авторизации. Решил остановиться на сессиях, которые хранятся в памяти. Для авторизации используем логин и пароль, если верно ставим сессию - id пользователя, если стоит галочка - запомнить меня, записываем в куку id и хеш.

Допустим у нас стоит кука и сессия, а что дальше? Сначала проверить есть или нет сессия, потом если нету проверять куку. Получается если правильная кука, то ставим сессию и делаем переадресацию на эту же страницу. Или остальной функционал после авторизации сделать в виде функции и подключать при необходимости после проверки сессии или куки?

И ещё прозвучало `использование сессий + аякс`, а подробнее можно?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
brevis
Шож ты так убиваешься? Тыж так не убьешься.

Проведи исследование. Возьми популярные CMS и посмотри как там сделано. Ну и нам потом расскажи.
Будет больше толку.

_____________
Чатик в телеге
depp
почему вы привязались к хранению сессий в памяти? это не самое лучшее решение. а на больших проектах с большим кол-вом посещений, можно сказать, даже, худшее.
Astin
Все одно и потому же, сто раз уже пояснили
- юсер вводит логин и пароль, если правильно, то записываем id в сессию
- если пожелал запомнить его, то делаем хеш, в хеш можно писать что тебе нравиься id , маил или еще чего, этот хеш пишем в бд к юсеру и его же записываем в куки
- если юсер заходит снова на сайт, к примеру на след день, то делаем проверку, если нет сессии и есть кука то лезим в бд, сверяем хеш куки и достаем id этого пользователя чей хеш и создаем сессию с его id , и тут же обновляем хеш этого юсера в бд и куках, ну а далее показывай ему че хочешь
- если нет сессии и нет кук, то показываем авторизацию

Что здесь непонятного, ты ходишь вокруг до около
RootPM
depp
Поясни почему хранить сессии в памяти хуже чем на дисках? При этом в сессии хранится только id пользователя.

P.S. Крупные проекты переходят именно на ОЗУ, у нас в одном проекте на сервере 128 гигов оперативной памяти.

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
Цитата (brevis @ 21.11.2016 - 13:16)
Тыж так не убьешься.

Я хочу это от вас услышать ) А у меня давно уже всё сделано wink.gif

Просто знакомые спрашивают, а так дал ссылку с мнениями разных программистов - пусть изучают ))

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
RootPM
Цитата (Astin @ 21.11.2016 - 15:10)
и тут же обновляем хеш этого юсера в бд и куках

Вот это не правильно, если авторизация на нескольких устройствах?

Вопрос больше в чём, сначала проверяем наличие сессии, а потом уже печеньки, правильно? Потом ставим сессию и тут два варианта, сделать переадресацию или использовать функцию, которая подключается в блоках сессии и после проверки куки, функция извлекает данные о пользователе.

Вы какой вариант выберите или свой предложите?

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
depp
Цитата (RootPM @ 21.11.2016 - 15:32)
depp
Поясни почему хранить сессии в памяти хуже чем на дисках? При этом в сессии хранится только id пользователя.

P.S. Крупные проекты переходят именно на ОЗУ, у нас в одном проекте на сервере 128 гигов оперативной памяти.

потому что данные теряться будут. я вообще не вижу у вас никакой проблемы использовать БД для сессий. тем более с таким кол-вом памяти. хотя и с мемкеш проблем возникнуть не должно.

крупные проекты переходят на ОЗУ. чего? для чего? для использования мемкеш?

есть вариант разместить виртаульный жесктий на озу и на нем раскатить базу. такие решения имеют место быть.
RootPM
Цитата (depp @ 21.11.2016 - 15:42)
потому что данные теряться будут.

крупные проекты переходят на ОЗУ. чего? для чего? для использования мемкеш?

Перед тем как перезагрузить сервер мы снимаем данные с памяти.

Что касается DB + сессии:
Цитата (killer8080 @ 2.11.2016 - 21:58)
Цитата (depp @ 2.11.2016 - 18:01)
я бы сессии в том варианте php, который есть - вообще не использовал. слишком накладно. проще всего писать в куку id и хэш. а саму сессию хранить в базе. нет ничего накладного в том, чтобы дергать постоянно инфу о пользователе из базы.

то есть схема:
php->файл_сессии
очень затратна по ресурсам, по сравнению с:
php->БД->файл_бд


_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
depp
RootPM
вы хотите сказать, что вообще не открываете коннект с базой при использовании своей программы?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.