Скрипт для автоматического заказа пароля на 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, указанный при регистрации. Как вы помните, при регистрации мы записывали данные пользователя не только в основную таблицу (в которой пароль зашифрован), но так же ещё в одну, где ничего не шифруется. Именно с этой таблицей и ведётся работа при восстановлении пароля.
Вы можете скачать файл с этим скриптом.