Скрипт для автоматического заказа пароля на e-mail

Такая возможность (восстановление забытого пароля) будет очень полезна. Это упростит жизнь админам сервера, которым не придётся лезть в таблицы БД, если пользователь забудет свой пароль. Итак, напишем код для реализации этой функции.

Для восстановления пароля, от пользователя надо запросить следующие данные: Логин и E-mail, введённые при регистрации. Можно ограничиться одним только адресом электронной почты, но, мы поступим серьёзнее и будет запрашивать ещё логин. Так надёжнее.

В страницу, восстановления пароля необходимо внести следующий код:
(Краткий алгоритм смотрите внизу, после исходного кода).

<?
include "config.php"; // подключаем файл с конфигом
if(isset($_GET['step'])) $step = $_GET['step'];
if($step == 2)
{
      // проверим соединение с mysql сервером
      if(Test_mysql_connect() == false)
      {
            echo "<font color='#ff0000'> Ошибка!
             Скорее всего игровой сервер неактивен, попробуйте зайти сюда позже.</font></a></font>";
             End_page();
      }
      $msconn = mysql_connect($dbhost, $dbuser, $dbpass);
      if($msconn == FALSE)
      {
             echo "<font color='#ff0000'>Ошибка соединения.
             Скорее всего игровой сервер неактивен, попробуйте зайти сюда позже.</font>";
             End_page();
      }
      if(!MYSQL_SELECT_DB($dbname))
      {
             echo "<font color='#ff0000'>БД не найдена! Скорее всего эта ошибка вызвана сбоем на сервере</font>"; End_page();
      }
      $login = trim($_POST[login]);
      $email = trim($_POST[email]);
      if ($email == "")
      {
             echo ("<center><font color='#ff0000'>Вы не ввели e-mail</font><br>Укажите e-mail, введённый при регистрации</center>");
             End_page();
      }
      if ($login == "")
      {
             echo ("<center><font color='#ff0000'>Вы не ввели логин</font></center>");
             End_page();
      }
      $q = mysql_query("SELECT * FROM accounts_info WHERE login='".$login."'");
      if ($q == FALSE)
      {
             echo ("<center><font color='#ff0000'>Произошла ошибка. Попробуйте снова!</font></center>");
             End_page();
      }
      if(mysql_numrows($q) > "0")
      {
             $row = mysql_fetch_array($q);
             if($email == $row['email'])
             {
                   // высылаем пароль
                   $message = "Здравствуйте, \15\12Вы или кто-то ещё заказал восстановление пароля от аккаунта ".$row['login']."\15\12";
                   $message .= "Ваш пароль: ".$row['pass']."\15\12\15\12";
                   $message .= "Это письмо сгенерированно автоматически, не отвечайте на него!\15\12\15\12";
                   $message .= "--\15\12С уважением,\15\12";
                   $message .= "Администрация сайта";
                   $res_m = mail($row['email'], "Восстановление пароля lineage", $message, "Content-Type: text/plain; charset=windows-1251");
                   echo "Пароль выслан на E-mail, указанный при регистрации.";
             }
             else
             {
                   echo ("<center><font color='#ff0000'>Указанный E-mail не совпадает с тем, который вы ввели при регистрации</font></center>");
             }
      }
      else
      {
             echo ("<center><font color='#ff0000'>Указанный логин не зарегистрирован</font></center>");
      }

      End_page();
}
else
{
?>
<li>Введите ваш Логин и E-mail<br>
<li>Пароль будет выслан на ящик, указанный при регистрации<br>

<form name="form1" method="post" action="?step=2">
<div align="center">
<table width="250" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right"><font size="2">Логин</font>  </td>
<td width="161"><label>
<input name="login" type="text" id="login">
</label><br><br>
</td>
</tr>
<tr>
<td align="right"><font size="2">E-mail</font>  </td>
<td><label>
<input name="email" id="repeat">
</label>
</td>
</tr>
</table>
</div>
<br>
<label>
<input type="submit" name="Submit" value="Выслать пароль">
</label>
</form>
<?
End_page();
}

function End_page()
{
?>
       Здесь футер вашей страницы - то, что идёт внизу страницы

<?
      exit;
}
?>
       После загрузки страницы должны появиться текстовые поля для ввода логина и e-mail. Введите данные и нажмите кнопку "Выслать пароль". После этого будет предпринята попытка соединения с сервером MySql, который установлен на игровом сервере. Если попытка успешна, будет произведена сверка логина и e-mail и если данные верны пароль будет выслан на E-mail, указанный при регистрации. Как вы помните, при регистрации мы записывали данные пользователя не только в основную таблицу (в которой пароль зашифрован), но так же ещё в одну, где ничего не шифруется. Именно с этой таблицей и ведётся работа при восстановлении пароля.

Вы можете скачать файл с этим скриптом.