Что я должен хранить в куки, чтобы реализовать «Запомнить меня» при входе пользователя - PullRequest
12 голосов
/ 07 декабря 2009

У меня есть система входа в систему для моего веб-сайта, данные пользователя, которые хранятся в базе данных: ИД пользователя (уникальный для каждого пользователя и идентификатора), адрес электронной почты (уникально), отображаемое имя (не уникально), пароль и memberince .
Теперь, что я должен хранить в печенье? Я думал о сохранении только идентификатора пользователя в cookie с датой истечения срока действия, а затем, если пользователь повторно посетит мой веб-сайт после регистрации, проверьте наличие cookie и войдите в него (что мне не подходит) и уничтожьте cookie если он решит выйти.
* Небольшое объяснение также будет очень полезно. Спасибо

Ответы [ 4 ]

13 голосов
/ 07 декабря 2009

Вы можете хранить идентификатор пользователя только в cookie, если вы подпишете его секретным ключом, который знают только ваши приложения. В противном случае пользователь может изменить файл cookie на что угодно и войти в систему под именем другого пользователя. Таким образом, если вы хотите сохранить идентификатор пользователя, сохраните также хэш идентификатора пользователя с секретным ключом (в идеале, используя HMAC ), а когда вы хотите войти в систему, рассчитайте тот же самый хэш и сравните его хеш из печенья. Другое решение - создать случайный токен, сохранить его в базе данных и использовать его в файле cookie. Если он длинный и достаточно случайный, существует очень мало шансов, что кто-нибудь угадает токен другого человека.

1 голос
/ 07 декабря 2009

PHP имеет встроенное управление сессиями, которое делает именно то, что вы ищете:

http://us.php.net/manual/en/book.session.php

Я бы не рекомендовал хранить user_id в cookie. Вместо этого вы можете сгенерировать уникальный токен и связать токен с пользователями в вашей базе данных, а также проверять и восстанавливать токен при каждом запросе. Опять же, это немного избыточно, потому что управление сессиями уже встроено в PHP.

0 голосов
/ 07 декабря 2009

PHP '$ _SESSION сделает это за вас. Вы даже можете написать свой собственный класс сеанса, если вам нравится полный контроль.

Небольшой учебник находится здесь: http://www.tizag.com/phpT/phpsessions.php

Вот небольшой пример использования mysql для хранения сеансов вместо php по умолчанию (файлы в / tmp) http://www.hawkee.com/snippet/2018/

0 голосов
/ 07 декабря 2009

Просто добавьте, что срок действия файла cookie истекает до 2 дней или на количество дней, которое вы хотите запомнить пользователем и сохранить файл cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...