проверка пользователя по электронной почте на PHP
На самом деле я создаю веб-приложение с использованием PHP и обращаюсь за помощью в проверке пользователя.
Как и на некоторых веб-сайтах, при регистрации вам будет отправлено электронное письмо со ссылкой для подтверждения. Как мне реализовать это в PHP?
Все, что я знаю, это то, что я должен использовать функцию PHP mail()
для отправки электронной почты.
Пожалуйста, помогите. Необходимый. Спасибо. :)
3 answers
Точно так же, как и при защите CSRF, вы генерируете уникальный токен.
$token = md5(uniqid(rand(), TRUE));
Вы сохраняете это значение в своем сеансе для этого электронного письма, и когда пользователь нажимает ссылку в электронном письме (вы передаете токен через строку запроса ), вы сравниваете два значения.
Чтобы сделать его более безопасным, вы могли бы, как и в случае CSRF, добавить ограничение по времени.
Ответ Патрика правильный, хотя я хочу отметить, что есть и другие возможности!
Вам не обязательно создавать и хранить уникальный токен в своей базе данных. Это накладные расходы на передачу данных, которые необходимы только один раз.
Вы также можете воспользоваться преимуществами одностороннего хэширования.
Например, отправьте пользователю код md5('my-secret-application-token'.$user_email_adress)
.
Вы можете проверить это точно так же, но вам не нужно хранить секретный код.
Это очень широкий вопрос, поэтому мы можем дать только общий ответ, но общий метод для этого
- вставьте адрес электронной почты пользователя в свою базу данных, но отметьте его как непроверенный
- создайте уникальный регистрационный ключ и вставьте его в другую таблицу только для этих ключей
- отправьте электронное письмо на адрес электронной почты пользователя со ссылкой на ваш сайт, который передает этот регистрационный ключ в качестве аргумента (например http://site.com/confirm.php?key=1234)
- при посещении этого URL-адреса отметьте электронное письмо как проверенное и удалите временно созданный регистрационный ключ