как сделать галочку запомнить меня
Реализация функционала запомнить меня
Продолжаем работать и усовершенствовать нашу форму авторизации. Если Вы прочитали предыдущие статьи, то у Вас уже должны быть созданы формы регистрации и авторизации с функционалом подтверждения адреса электронной почты и с возможностью восстановить забытый пароль.
А в этой статье мы добавим к нашей форме авторизации функционал » запомнить меня «, который избавит пользователя от требования пройти авторизацию при каждом входе на сайт. Данный функционал работает следующим образом: при первом входе на сайт, если пользователь поставит галочку » запомнить меня «, то, у него на компьютере, на некоторое время, сохранится кука с неким токеном. С помощью этой куки, при следующем входе на сайт, пользователь авторизуется автоматически.
Замечание! После скачивания архива с исходными файлами статьи, не забудьте поменять данные для подключения к базе данных и указать адрес Вашего сайта. Всё это нужно сделать в файле dbconnect.php.
Под следующим входом, имеется в виду, когда пользователь завершил работу на сайте и закрыл его, потом через некоторое время зашёл заново на сайт.
И так, первое что нам нужно сделать, это добавить сам чек бокс » Запомнить меня « в форму авторизации. Открываем файл » form_auth.php » и перед строкой с кнопкой » Войти » и ссылкой » Забыли пароль? » добавляем эту строку:
Идём дальше. Как мы знаем, обработчиком нашей формы является файл » auth.php «. Поэтому открываем его и перед тем как добавить данные авторизации в сессию, нужно добавить этот код:
Как Вы поняли, здесь мы обрабатываем чек бокс » Запомнить меня «. Если галочка была поставлена, то мы создаём куку, которая содержит некий токен. А если галочка не была поставлена, то мы удаляем созданную куку.
Токен мы добавляем в базу данных, для того чтобы при следующем входе на сайт, мы смогли с помощью него вытащить нужные данные из базы.
Как мы знаем куки не безопасны для хранения данных, поэтому нельзя добавить в куку открытый пароль, потому что злоумышленник может украсть куки и с помощью них узнать данные для авторизации. Поэтому вместо пароля мы используем токен.
С первой частью мы закончили. Идём дальше. Представим, что пользователь поставил галочку » запомнить меня » и успешно авторизовался. Он погулял по сайту, написал пару комментариев и после этого вышел с сайта. Когда он заново зайдёт на сайт, то он должен авторизоваться автоматически, ведь он указал, чтобы его запомнили.
Так вот, для того чтобы организовать эту автоматическую авторизацию мы должны использовать куку с токеном. Нам нужно добавить код в тот файл, который подключается на всех страницах сайта, чтобы пользователя авторизовали с любой страницы. Вдруг он добавит, какую-ту страницу в закладках браузера.
Поэтому открываем файл » header.php » и в начале файла, сразу после функции запуска сессии, добавляем этот код:
Здесь мы проверяем, если кука с токеном существует и она не пуста, то мы делаем запрос к базе для выборки почтового адреса и пароля, где значение поля » password_cookie_token «, равна со значением куки » $_COOKIE[«password_cookie_token»] «.
И если такая запись существует, то мы в сессию добавляем почтовый адрес и пароль указанного пользователя. Вот таким образом и сделали автоматическую авторизацию.
Это ещё не всё, остался один момент. При нажатии на кнопку » Выход «, мы должны удалить куку с токеном. Открываем файл » logout.php » и перед тем как удалить данные из сессии добавляем этот код:
Мы здесь проверяем, если существует кука с токеном, то мы очищаем поле » password_cookie_token » и запускаем механизм удаления самой куки с токеном.
Вот теперь всё. С функционалом » запомнить меня « мы закончили.
Замечание! После скачивания архива с исходными файлами статьи, не забудьте поменять данные для подключения к базе данных и указать адрес Вашего сайта. Всё это нужно сделать в файле dbconnect.php.
Похожие статьи:
Видео по теме:
Понравилась статья?
Тогда поделитесь ею с друзьями и подпишитесь на новые интересные статьи.
Поделиться с друзьями:
Подписаться на новые статьи:
Поддержите пожалуйста мой проект!
Если у Вас есть какие-то вопросы или предложения, то можете писать их в комментариях или мне на почту sergiu1607@gmail.com. И если Вы заметили какую-то ошибку в статье, то прошу Вас, сообщите мне об этом, и в ближайшее время я всё исправлю.
Автор статьи: Мунтян Сергей
Авторизация. Запомнить меня. Как это делается?
Часто приходится встречать кнопку запомнить меня в меню авторизации. Почти на каждом форуме, почте или блоге, где регистрационные данные не столь ценны – можно встретить такую удобную галочку.
Почему так устроено?
Все дело в том, что понять, что с этого компьютера вошли именно вы – достаточно проблематично. Сервер может отследить ваш IP и по нему назначить вам сессию, но хранить он ее будет не долго, т.к. через час вашего отсутствия он будет думать, что вы уже ушли и хранить информацию больше ни к чему.
Так, когда вы возвращаетесь на форум на следующие сутки – он вас вдруг вспоминает. Это работает следующим образом – при авторизации – сервер дает команду сохранить логин и шифр пароля у вас на компьютере, в файлах, под названием Куки cookie. И каждый раз, когда вы входите на форум – компьютер автоматически отправляет эти данные и вас узнают.
Получается – это не безопасно? Конечно, хранение файлов с логином и паролем у себя в открытом виде – небезопасно. По этому обычно храниться не сам пароль, а хеш пароля. Но, тем не менее, потенциальная угроза остается. Кто-то может при помощи не хитрых приспособлений, поместив небольшой кусок Javascript на страницу с форумом – получить эти данные и также, в виде файлов – разместить их у себя. Либо злоумышленник может сделать нехитрый exe файлик, который при запуске будет считывать все ваши файлы cookie и передавать их куда-либо.
Таким образом – Безопасность страдает в угоду удобства.
Как же это делать технически?
Очень просто – при авторизации – вешаем пользователю 2 куки
Время хранения указываем, какое хотим. В примере – 2 недели с момента авторизации
Помним, что в базе данных храниться хеш пароля. Но даже хеш нельзя давать человеку в куку, по этому создаем хеш хеша пароля :). В функцию обязательно пихаем соль и id учетной записи, чтобы сложнее было понять сам пароль и хешу.
Далее – когда пользователь заходит на сайт – проверяем, есть ли у него установленные Куки и сравниваем тот же хеш пароля. На выходе – либо авторизируем, либо уничтожаем Куки.
К примеру можно сделать так в загрузочном файле:
Последним – ставим признак сверки хеша хеша пароля ). Когда мы захотим авторизоваться обычным образом – мы просто передадим false.
Сама же функция авторизации может выглядеть простым способом
Думаю вопросов много не будет. Сперва проверяем данные, смотрим данные из базы.
Сравнение зависит от типа хеша. При обычном сравнении – идет сравнение с солью, данной при регистрации, а при хешированном – хеш еще раз хешуется.
Переменная login не должна меняться для пользователя, иначе пароли тоже перестанут срабатывать.
Вполне простая процедура, не требующая хитрых приспособлений
Функция «запомнить меня» при авторизации
Реализация функции «Запомнить меня»
всем доброго времени суток тут такая проблемка я в php не особо силен в плане куках Вопрос в.
«Запомнить меня»
Здравствуйте, уважаемые гуру 🙂 Хочу спросить у вас, как можно реализовать «опцию запомнить меня».
Загрузка «аватарки» при авторизации пользователь
Здравствуйте, решил сделать вывод изображения пользователя при авторизации. Изображение не.
Делаете функцию шифрования.
В ней выбираете ключик побольше, 1024 бита например.
Шифруете в куке id юзера и ещё что то, например соль из таблицы юзера.
Когда юзер заходит, вы проверяете, если етсь ид в сессии, значит он авторизован, если нет, то проверяете куку, если она есть, расшифровываете её, и выбираете юзера по двум полям, id + salt или вместо соли хеш пароля. Что бы даже, если кто то сопрёт ключ, а этого не должно случится, то он всё равно не авторизовался только по id.
Добавлено через 2 минуты
Вот чего там не должно быть, так это IP и строки с инфой о браузере.
Вы в однокласниках, вконтакте, гугле или ещё где то переавторизовываетесь? Если ип сменится или с двух разных компьютеров заходите? Вряд ли.
А если у меня динамический ип, то что мне делать? я мне смогу себя запомнить?
Так вот если откинуть воровство трафика, остаётся только одно, пользователь вошел на компьютере, к которому есть доступ других юзеров. Но раз кука там етсь, то он остался войдённым, и они уже получили доступ к ПК.
Для жтого юзеру самому нужно заботиться о безопасности своего аккаунты, и выходить с профиля, когда находишься в компьютерном клубе.
Я уже 2 года не вводу пароль вконтанке например, а строка юзер агент при этом менялась.
И ИП у меня динамический. Значит всё таки крупные сайты не привязывают не к ип не к юзер агенту?
Авторизация и механика чекбокса «запомнить меня» Есть решение
Тех. поддержка отфутболила сюда, вразумительного ответа от них добиться не смог.
Вопрос по механике работы чекбокса «запомнить меня». Мои ожидания по его работе следующие: если checked, то сессия авторизации хранится сколько угодно долго не зависимо от настройки php session.gc_maxlifetime сервера? Или у меня завышенные ожидания?
В чем разница состояний этого чекбокса?
Проблема описана была уже многими в разделе помощь, например в этой теме: https://support.webasyst.ru/fo.
3 ответа
Такой ответ получил от тех поддержки:
Работа механизма связанна с сессиями php, но прежде всего для неавторизованных пользователей, в этом случае работает session.gc_maxlifetime»
Я это понимаю так, что для авторизованного пользователя с отмеченной галочкой «запомнить меня» session.gc_maxlifetime ни на что не влияет. Поправьте если я ошибаюсь.
Стал ковырять и нашел баг на стороне авторизации вебасиста.
1) Форма авторизации на витрине /login/
При отправке формы с галочкой «запомнить меня» видим что отправляет два значения remember 1 и 0
Он и перезатирает то что выбирает пользователь.
2) Форма авторизации в бекенде /webasyst/
Там тоже самое только порядок инпутов обратный
Поэтому input hidden не перезатирает значение пользовательского
Как сделать галочку запомнить меня
Создание игр на Unreal Engine 4
Данный курс научит Вас созданию игр на Unreal Engine 4. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.
В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.
Помимо самого курса Вас ждёт ещё 5 бесплатных ценных Бонусов: «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства» и «Создание прототипа RPG с открытым миром».
Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.
Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.
Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.
Зачем Вы изучаете программирование/создание сайтов?
Написание лайфхаков на Python для начинающих
Данный курс покажет Вам, как можно автоматизировать рутинные задачи с помощью Python. В курсе Вас ждёт несколько примеров и все исходники.
Чтобы получить Видеокурс,
заполните форму
5 шагов и профессиональный сайт готов
— Вы будете иметь чёткий план действий.
— Вы сможете начать создавать сайт.
— Вы сможете легко ориентироваться в информации по созданию сайтов.