Есть баг в работе сайта. Вверху сайта красная полоса. "Пожалуйста, обновите пароль для восстановления доступа к аккаунту. Мы отправили письмо с инструкциями на вашу почту . " Дело в том, что письмом сразу не воспользовался, а потом вообще удалил с почты. И соответствующая ссылка для смены пароля тоже канула в лету. А вот кнопки, выслать письмо с инструкцией повторно, нету. К счастью для себя я настраивал хранение удалённых писем в течении месяца и смог восстановить само письмо. При этом невозможно никуда написать, ни попросить о помощи. Как альтернатива только создание нового аккаунта, чтобы восстановить старый. Не раз облазил сайт, как обновить пароль так и не нашел. Прошу доведите функционал до ума, добавьте возможно запроса повторного письма. И возможность связи с модератором или ТП.

  • Введите действующий пароль.
  • Введите новый пароль и повторите его, чтобы не ошибиться.
  • Нажмите «Изменить».
  • Меняйте пароль хотя бы раз в год, а лучше — раз в 3 месяца. Так ваш ящик всегда будет в безопасности. Чтобы выбрать надежный пароль, прочитайте наши советы.

    Проблемы с изменением пароля

    Не помню текущий пароль

    В этом случае вы можете только восстановить доступ по номеру телефона, дополнительной почте или через службу поддержки. Подробнее о восстановлении доступа читайте в статье «Не помню пароль».

    Нет кнопки «Изменить пароль»

    Вы вошли в Mail.ru c почтовым ящиком другого сервиса: «Яндекс.Почты», Gmail, «Рамблера», Yahoo и так далее. Чтобы изменить пароль, перейдите в сервис, где регистрировали почтовый ящик, и измените пароль там.

    Кнопка неактивна, под кнопкой надпись «Смена пароля запрещена администратором домена»

    Вы вошли в почтовый ящик, расположенный на стороннем домене — скорее всего, вы пользуетесь рабочей почтой. Чтобы изменить пароль, обратитесь к администратору, который выдавал вам доступ к этой почте.

    При смене пароля возникает ошибка

    Напишите в службу поддержки и прикрепите, пожалуйста, скриншот возникающей ошибки. Это поможет быстрее разобраться в проблеме.

    Здравствуйте уважаемый посетитель!

    В предыдущей статье мы рассмотрели отправку email для восстановления логина учетной записи зарегистрированного пользователя. А сегодня посмотрим, как с использованием почты восстановить пароль.

    Следует отметить, что алгоритм восстановления логина и пароля во многом схож. Однако, помимо общих операций, присутствующих в обоих случаях, при восстановлении пароля требуется предусмотреть дополнительные мероприятия, необходимые для обеспечения более высокой степени защиты восстанавливаемых данных.

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

    • Алгоритм восстановления пароля учетной записи пользователя
    • Формируем форму восстановления пароля
    • Создаем обработчик формы
    • Формируем страницу изменения пароля
    • Проверяем работу созданного механизма восстановления пароля
    • Исходные файлы сайта

    Алгоритм восстановления пароля учетной записи пользователя

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

    1. Пользователь в предназначенную для восстановления пароля форму вводит свой адрес электронной почты, который ранее указал при регистрации.
    2. При отправке запроса в обработчике формы производится проверка наличия в базе данных введенного адреса. В зависимости от результата проверки дальнейшие действия происходят в следующем порядке:
    1. В случае, если такого адреса в базе данных нет, то об этом сообщается пользователю с предложением вновь ввести адрес и повторно отправить запрос.
    2. При нахождении адреса:
    1. Из базы данных извлекаются соответствующие адресу электронной почты имя и логин пользователя.
    2. Формируется одноразовый ключ доступа к восстановлению пароля.
    3. Сформированный одноразовый ключ доступа сохраняется в базе данных в записи, соответствующей данному пользователю.
    4. На указанный email отправляется письмо пользователю со ссылкой на страницу сайта для восстановления пароля (в ссылке в качестве GET-параметра включен одноразовый ключ доступа).
    5. При получении письма пользователь переходит по ссылке на страницу сайта, на которой в специальной форме меняет пароль на новый (изменение пароля возможно только при соответствующем ключе доступа и с правильно указанным пользователем логином).
    6. При изменении пароля происходит удаление ключа доступа, хранящегося в базы данных.
    7. В случае, если пользователь, или кто иной, попытается повторно изменить пароль по данной ссылке, то на странице сайта ему будет сообщено о несоответствии ключа доступа к изменению пароля и предложено вновь пройти процедуру его восстановления.

    В данном случае после оправки пользователем запроса на восстановление пароля (пункт 1,2), при наличие в базе данных введенного адреса email (пункт 2,б), формируется одноразовый ключ (пункт 2,б,ii). Который сохраняется, как в базе данных (пункт 2,б,iii), так и вставляется в виде GET-параметра в ссылку почтового сообщения (пункт 2,б,iv).

    Далее, в отличие от варианта восстановления логина, пользователю отправляется письмо не с самими данными, а со ссылкой на страницу сайта, на которой предоставляется возможность их восстановить (смена пароля на новый, пункт 2,б,v).

    При этом, в целях безопасности пользователю дается право сделать это только один раз . Обусловлено это тем что после изменения пароля, ранее сохраненный в базы данных ключ (пункт 2,б,vi) удаляется, и в дальнейшем ссылка становится нерабочей (пункт 2,б,vii).

    Таким образом алгоритм действий по восстановлению пароля мы разобрали, и теперь можно перейти к его реализации.

    Формируем форму восстановления пароля

    Форма для восстановления пароля предназначена точно для таких же целей, как и в предыдущем случае, а именно: для оправки пользователю электронного сообщения в соответствии введенным адресом email.

    Поэтому и HTML-код ее будет полностью повторять ранее рассмотренный вариант. За исключением только адреса обработчика, указанного в атрибуте формы action.

    Введите указанный при регистрации e-mail, на который будет выслано письмо, предназначенное для восстановления пароля.

    Рис.1 HTML-код формы восстановления пароля

    Как видно, здесь указан адрес /user/password/otpravka-email-dlya-vosstanovleniya-parolya.html (поз. 6), в соответствии с которым мы следующим шагом будем создавать файл обработчика формы.

    А что касается размещения формы, то, как и в предыдущем случае, ее код мы поместим в поле "content" таблицы "url" базы данных, предназначенном для размещения основного содержания страниц сайта. Обусловлено это тем, что в отсутствии PHP-кода нет необходимости использовать для этого файл.

    Ниже показан скриншот записи таблицы "url", соответствующей странице "Восстановление пароля", с размещенным в области основного содержания HTML-кодом данной формы.

    Рис.2 Размещение формы восстановления пароля в таблице БД

    Создаем обработчик формы

    Так как в данном случае обработка формы и отправка email аналогична восстановлению логина, то и код обработчика в большой степени будет повторять ранее рассмотренный вариант. За исключением только тех строк, в которых в функционал обработчика добавляются дополнительные действия, соответствующие пунктам с 2,б,ii по 2,б,iv алгоритма.

    Ниже приведен код, в котором добавленные и измененные строки выделены более светлым фоном по отношению к ранее используемым фрагментам обработчика формы восстановления логина.

    //—-Скрипт отправки почты для восстановления пароля—-

    use PHPMailerPHPMailerPHPMailer ; //Импорт классов PHPMailer в глобальное пространство имен. Они должны быть в верхней части скрипта, а не внутри функции

    $email = $_POST[ "recovery-email" ]; //Получение из формы адреса email

    $email = check_symbol ($email, "E-mail" , "1" , "/^[A-Z0-9._%+-]+@([A-Z0-9-]+.)+[A-Z]<2,6>z/i" ); //Вызов пользовательской функции проверки и обработки данных формы

    $GLOBALS[ ‘alert’ ] = ‘Данные из формы не отправлены. Обнаружены следующие ошибки:
    ‘ .$GLOBALS[ ‘alert’ ];

    include "alert.php" ; //Вывод сообщения об ошибке в диалоговом окне браузера

    Введите повторно указанный при регистрации e-mail, на который будет выслано письмо, предназначенное для восстановления пароля.

    $table = ‘orders’ ; //Присвоение переменной $table имени таблицы, в которой будет происходить поиск требуемой записи

    $column = ‘client-email’ ; //Присвоение переменной $column имени поля, по значению которого будет производиться поиск

    $value = $email; //Присвоение переменной $value значения адреса email пользователя

    $data_bd = getLine ($table, $column, $value); //Вызов функции вывода одиночной стоки по заданному условию

    $login = $data_bd[ ‘client-login’ ]; //Извлечение логина пользователя

    $name = $data_bd[ ‘client-name’ ]; //Извлечение имени пользователя

    $rand = mt_rand (); //Формирование случайного целого числа

    $column = ‘rand’ ; //Присвоение переменной $column имени поля, в котором сохраняется случайное число

    $value = $rand; //Присвоение переменной $value значения случайного числа

    $column_1 = ‘client-email’ ; //Присвоение переменной $column_1 имени поля заданного условия

    $value_1 = $email; //Присвоение переменной $value_1 значения заданного условия

    $data_bd = rihgtOneColumnOneСondition ($table, $column, $value, $column_1, $value_1); //Вызов универсальной функции записи данных по заданному условию в одном поле (запись значения случайного числа $rand в поле ‘rand’)

    $code_email = urlencode ($email); //Кодирование сроки, в которой все не цифробуквенные символы, кроме "-", "_" и "." заменяются знаком процента "%" с шестнадцатеричными числами

    $link = ‘http://’ .$_SERVER[ ‘SERVER_NAME’ ]. ‘/user/password/izmenenie-parolya.html?mail=’ .$code_email. ‘&rand=’ .$rand; //Формирование ссылки с GET-параметрами адреса email (mail) и значением ключа доступа (rand)

    require ‘PHPMailer/src/PHPMailer.php’ ; //Подключение библиотеки PHPMailer

    $mail = new PHPMailer (); //Инициализация класса

    $from = ‘admin@avtobezugona.ru’ ; //Адрес почты, с которой идет отправка письма

    $to = $email; //Адрес получателя

    $mail -> isSMTP (); //Применение протокола SMTP

    $mail -> Host = ‘smtp.yandex.ru’ ; //Адрес почтового сервера

    $mail -> SMTPAuth = true ; //Включение режима авторизации

    $mail -> Username = ‘admin@avtobezugona.ru’ ; //Логин от доменной почты, подключенной к стороннему почтовому сервису (в данном случае в Яндекс.Почта)

    $mail -> Password = ‘2MsDom78’ ; //Пароль от доменной почты

    $mail -> SMTPSecure = ‘ssl’ ; //Протокол шифрования

    $mail -> Port = ‘465’ ; //Порт сервера SMTP

    $mail -> CharSet = ‘UTF-8’ ; //Кодировка

    $mail -> setFrom ($from, ‘Авто без угона’ ); //Адрес и имя отправителя

    $mail -> addAddress ($to, ‘Авто без угона’ ); //Адрес и имя получателя

    $mail -> isHTML ( true ); //Установка формата электронной почты в HTML

    $mail -> Subject = ‘Восстановление пароля’ ; //Тема письма (заголовок)

    Вы запросили восстановление пароля от учетной записи на сайте "Авто без угона".

    Для смены пароля, пожалуйста, перейдите по ссылке: .$link.

    Если Вы не запрашивали восстановление пароля, и это письмо попало по ошибке, просто не реагируйте на него или удалите.

    Письмо отправлено автоматически сервисом рассылки Авто без угона