Подскажите где хранить имя пользователя, я вот как делаю, после регистрации или авторизации добавляю имя пользователя в куку и потом вывожу, не могу сообразить как реализовать по другому что бы в печеньках не хранить такую инфу, подскажите
Из БД доставать при авторизации.
_____________
Принимаю заказы, писать в ЛС
Цитата (Медведь @ 9.08.2015 - 00:57) |
Из БД доставать при авторизации. |
Ну это понятно, мой вопрос был где хранить если не куках, а не как достать и положить
В сессии, в куках можно изменить. Хотя если сайт посещаемый будет нагрузка.
_____________
Принимаю заказы, писать в ЛС
Медведь
Я думал о сессиях, дело в том что сессия живет определенное время
Вот это
_____________
Принимаю заказы, писать в ЛС
Медведь
Ну как вариант, нагрузка правда если хранить в сессиях, а если не сессиях и не в печеньках, то как еще можно? Или тогда два варианта ?
В сессии я храню только ключ от авторизации и id этого пользователя, остальное в куках.
При опасных действиях, проверяю в БД id и ключ (ключ записываю в БД при авторизации, при выходе стираем)
_____________
Принимаю заказы, писать в ЛС
Цитата (Медведь @ 9.08.2015 - 01:21) |
При опасных действиях, проверяю в БД id и ключ (ключ записываю в БД при авторизации, при выходе стираем) |
Ну у меня примерно так же, только слегка по другому. Я вот знаю что куки воруются, а изменяются ли? ну к примеру в куках был Вася Пупкин, могут ли изменить на Иван Иванов?
Да, любые пользовательские данные проверяй
_____________
Принимаю заказы, писать в ЛС
Цитата (Медведь @ 9.08.2015 - 01:28) |
Да, любые пользовательские данные проверяй |
Ну вот, тогда. придется хранить в сессиях, раз других вариантов нету, не охота базу дергать лишний раз
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
Arh
Для чего вы мне это расписывает?
Цитата (Arh @ 9.08.2015 - 02:54) |
Аутентификация как проходит? Не через базу? |
Через базу. Приведу пример, на данном форуме написано в самом вверху Привет, Wind, у меня примерно так же, выводится имя пользователя из куки, я и спрашиваю где еще можно хранить если не в куках? Или вы предлагаете для вывода приветствия постоянно дергать базу?
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'];
}
} else {
echo 'Введите логин и пароль ';
}
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Ну понятно что дернулась, а потом то больше не дергается, человек пришел через неделю и его авторизировало по куки, а вывести то надпись с приветствием как
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.