[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Где хранить имя пользователя если не в куках?
Страницы: 1, 2, 3
VeRTak
Подскажите где хранить имя пользователя, я вот как делаю, после регистрации или авторизации добавляю имя пользователя в куку и потом вывожу, не могу сообразить как реализовать по другому что бы в печеньках не хранить такую инфу, подскажите
Миша
Из БД доставать при авторизации.

_____________
Принимаю заказы, писать в ЛС
VeRTak
Цитата (Медведь @ 9.08.2015 - 00:57)
Из БД доставать при авторизации.


Ну это понятно, мой вопрос был где хранить если не куках, а не как достать и положить
Миша
В сессии, в куках можно изменить. Хотя если сайт посещаемый будет нагрузка.

_____________
Принимаю заказы, писать в ЛС
VeRTak
Медведь

Я думал о сессиях, дело в том что сессия живет определенное время
Миша
Вот это

_____________
Принимаю заказы, писать в ЛС
VeRTak
Медведь

Ну как вариант, нагрузка правда если хранить в сессиях, а если не сессиях и не в печеньках, то как еще можно? Или тогда два варианта ?
Миша
В сессии я храню только ключ от авторизации и id этого пользователя, остальное в куках.

При опасных действиях, проверяю в БД id и ключ (ключ записываю в БД при авторизации, при выходе стираем)

_____________
Принимаю заказы, писать в ЛС
VeRTak
Цитата (Медведь @ 9.08.2015 - 01:21)
При опасных действиях, проверяю в БД id и ключ (ключ записываю в БД при авторизации, при выходе стираем)


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

_____________
Принимаю заказы, писать в ЛС
VeRTak
Цитата (Медведь @ 9.08.2015 - 01:28)
Да, любые пользовательские данные проверяй


Ну вот, тогда. придется хранить в сессиях, раз других вариантов нету, не охота базу дергать лишний раз
Arh
Wind
Аутентификация как проходит? Не через базу?
Как узнать что Вася Пупкин - это действительно Вася Пупкин?
В куках кроме ключа авторизации и возможно id пользователя ничего хранить не надо (касательно авторизации)
Ключ генерируется с помощью хеша допустим

$key = md5($пароль.$id.$dbkey.$_SERVER['HTTP_USER_AGENT']);
setcookie('id', $id);
setcookie('key', $key);


Аутентификация проходит грубо говоря так:
Получаем из базы пользователя с id из кук
строим на основе этих данных ключ
$key = md5($пароль.$id.$dbkey.$_SERVER['HTTP_USER_AGENT'])
если $key совпадает с $_COOKIE['key'], то всё нормально и полученные данные используются дальше.

$dbkey это то о чем медведь говорил, что бы сделать кнопку "выйти со всех устройств"
$_SERVER['HTTP_USER_AGENT'] небольшая защита от кражи кук

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
VeRTak
Arh

Для чего вы мне это расписывает?

Цитата (Arh @ 9.08.2015 - 02:54)
Аутентификация как проходит? Не через базу?


Через базу. Приведу пример, на данном форуме написано в самом вверху Привет, Wind, у меня примерно так же, выводится имя пользователя из куки, я и спрашиваю где еще можно хранить если не в куках? Или вы предлагаете для вывода приветствия постоянно дергать базу?
Arh
Wind
Цитата
Или вы предлагаете для вывода приветствия постоянно дергать базу?

Она уже дёрнулась во время аутентификации, в этот же момент были получены данные о пользователе, включая его имя.

if (isset($_COOKIE['key']) && isset($_COOKIE['id'])) {

$id = (int)$_COOKIE['id'];
$user = $db->query("SELECT * FROM users WHERE `id` = ".$id)->fetch();

if (md5($user['id'].$user['password']) == $_COOKIE['key']) {

echo 'Привет, '.$user['name']; //Привет, Wind

}

}
else {

echo 'Введите логин и пароль ';

}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
VeRTak
Arh

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

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