Ищете несколько хороших вариантов для отправки пользователям сброса пароля электронной почты

Я хочу отправлять электронные письма пользователям, когда забывают их пароли, которые побуждают их сбросить свои пароли. Я знаю, что это спорно и ищу несколько хороших варианты / предложения / методы / статьи на выбор.

Я предлагаю пользователям нажать на ссылку "забыл пароль" с помощью простого скрипта с частью PHP, которая делает это:

$Email = $_POST['email'];
$success = false;
$formError = false;

if(isset($_POST['sub_forgot_pw'])) {

    if(empty($_POST['email'])) {
        $formError = "true";
        $error = "Please enter your e-mail address.";
    }else{
        $to = $Email;
        $subject = "Password Help";
        $message = "To reset your password, please <a href='http://www.blahblahblah.org'>Click here</a><br /><br />Do LIFE,<br /> The Team";
        $from = "CysticLife <noreply@cysticlife.org>";
        $headers  = 'MIME-Version: 1.0' . "\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
        $headers .= "From: $from";
        if(mail($to, $subject, $message, $headers));{
            $success = "true";
        }


    }

}

2 ответа

Решение

Вот что я делаю:

У меня есть таблица reset_password. Когда кто-то запрашивает сброс, они обычно нажимают на ссылку на вашем сайте, где написано "забыл пароль", где они вводят свою электронную почту, с которой они зарегистрированы, и ваша система отправляет ссылку. Конечно, вы начинаете с выяснения, зарегистрирован ли пользователь вообще. выбирая из пользователей, где email = $_POST['email']. Если они существуют, создайте случайно сгенерированный токен, например

$token = md5($_POST['email'].time());

Но, как сказал Бух Бух в комментарии ниже, вы можете использовать что-то менее очевидное для генерации вашего токена. crypt () может принять шаблон соли, если хотите.

Вставьте запрос (адрес электронной почты и токен) в таблицу reset_password, а затем отправьте им ссылку, например

http://www.domain.com/resetpassword.php?token=<?php echo $token; ?>

Затем в этом файле вы берете $_GET['token'] и сопоставляете его с таблицей reset_password. Если токен действителен, вы предоставляете им форму, которая запрашивает новый пароль. После отправки выберите пользователя с адресом электронной почты, связанным с этим токеном, и обновите таблицу пользователей.

Существует опасность потери URL для любого, кто прослушивает сеть. Чтобы избежать этого, вы можете сгенерировать случайный короткий ключ, такой как vX4dq, и сохранить его в своей базе данных. Попросите пользователя запомнить это. Когда пользователь перезагружается по ссылке, попросите его / ее ввести только известный ему ключ.

Дополнительно:- вы можете показать этот ключ в капче, чтобы он не был прослушан.

Другие вопросы по тегам