Intereting Posts
Может ли кто-нибудь объяснить мне функцию pack () в PHP? Делает ini_set ('session.save_path', 'custom path'); Эффект уборщика мусора? Если первый пост, стиль по-разному – WordPress Yii Модель с составным первичным ключом Как отлаживать «Неустранимая ошибка: вне памяти (выделено XXX) (пытался выделить XXXXX байты)»? SDK SDK Paypal собирается из песочницы, чтобы жить Используйте Javascript для доступа к переменной, переданной через Twig Как получить имя вызывающего класса (в PHP) Контактная форма отправляет электронную почту, но не приходят письма Получить все перестановки массива PHP? Использование PHP и Google Maps Api для определения расстояния между двумя почтовыми кодами (Великобритания) Как загрузить набор результатов MySQLi в двумерный массив? date (), «Неверное сформированное числовое значение столкнулось» не хочет форматировать дату, прошедшую в $ _POST Временная зона файлов журналов PHP Как игнорировать синхронизацию, если значение null в laravel

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

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

Я предлагаю пользователям нажимать ссылку «забыть пароль» с помощью простого скрипта с частью 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"; } } } 

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

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

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

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

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

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

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

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

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