подтвердить пользователя по электронной почте в PHP - PullRequest
2 голосов
/ 06 февраля 2011

Я на самом деле создаю веб-приложение с использованием PHP и ищу помощи в проверке пользователя. Как и на некоторых веб-сайтах, при регистрации вам отправляется электронное письмо со ссылкой для подтверждения. Как мне реализовать это в PHP? Все, что я знаю, это то, что мне нужно использовать функцию PHP mail() для отправки электронной почты. Пожалуйста помоги. Необходимо. Благодарю. :)

Ответы [ 3 ]

7 голосов
/ 06 февраля 2011

Ответ Патрика правильный, хотя я хочу указать, что есть и другие возможности!

Вам не обязательно создавать и хранить уникальный токен в вашей базе данных.Это служебная информация, которая требуется только один раз.

Вы также можете воспользоваться односторонним хэшированием.

Например, отправьте пользователю код md5('my-secret-application-token'.$user_email_adress).

Вы можете проверить это точно так же, но вам не нужно хранить секретный код.

3 голосов
/ 06 февраля 2011

Это очень широкий вопрос, поэтому мы можем дать только широкий ответ, но общий способ сделать это -

  1. вставить адрес электронной почты пользователя в вашу базу данных, но пометить его как неподтвержденный
  2. создайте уникальный регистрационный ключ и вставьте его в другую таблицу только для этих ключей
  3. отправьте электронное письмо на адрес электронной почты пользователя со ссылкой на ваш сайт, который передает этот регистрационный ключ в качестве аргумента (например, http://site.com/confirm.php?key=1234)
  4. при посещении этого URL, отметьте письмо как проверенное и удалите временно созданный регистрационный ключ
1 голос
/ 06 февраля 2011

Как и в случае защиты CSRF , вы генерируете уникальный токен.

$token =  md5(uniqid(rand(), TRUE));

Вы сохраняете это значение в своем сеансе для этого письма и когда пользователь щелкает ссылку в письме (вы передаететокен через строку запроса ) вы сравниваете два значения.

Чтобы сделать его более безопасным, вы можете, как в CSRF, добавить ограничение по времени.

...