Скрипт для смены пароля пользователя
Неплохо будет так же предоставлять возможность менять пароль пользователя. Для смены пароля пользователя надо запросить следующие данные: Логин, текущий пароль, новый пароль и подтверждение нового пароля. Логин и текущий пароль нужны для аутентификации (проверки подлинности пользователя). Новый пароль - понятно, он будет записан на место старого, если аутентификация пройдёт успешно.В страницу, восстановления пароля необходимо внести следующий код:
(Краткий алгоритм смотрите внизу, после исходного кода).
<?
include "config.php"; // подключаем файл с конфигом
if(isset($_GET['step'])) $step = $_GET['step'];
if($step == 2)
{
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]);
$pass = $_POST[pass];
$newpass = $_POST[newpass];
$re_newpass = $_POST[re_newpass];
if ($login == "")
{
echo ("<center><font color='#ff0000'>Вы не ввели логин</font></center>");
End_page();
}
if ($newpass != $re_newpass)
{
echo ("<center><font color='#ff0000'>Новый пароль и подтверждение не совпадают</font><br></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($pass == $row['pass'])
{
$gamepass = base64_encode(pack("H*", sha1(utf8_encode($newpass))));
$result = mysql_query("UPDATE accounts SET password='".$gamepass."' WHERE login='".$login."'");
if($result == FALSE)
{
echo "Ошибка запроса. Свяжитесь с администрацией.";
End_page();
}
$result = mysql_query("UPDATE accounts_info SET pass='".$newpass."' WHERE login='".$login."'");
if($result == FALSE)
{
echo "Пароль от аккаунта изменён, но произошли ошибки. Вы не сможете восстановить ваш пароль в случае утери.";
End_page();
}
echo "Пароль изменён.";
}
else
{
echo ("<center><font color='#ff0000'>Текущий пароль неправильный</font></center>");
}
}
else
{
echo ("<center><font color='#ff0000'>Указанный логин не зарегистрирован</font></center>");
}
End_page();
}
else
{
?>
<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> <br></td>
<td ><label>
<input name="login" type="text" id="login">
</label><br>
</td>
</tr>
<tr>
<td align="right"><font size="2">Пароль</font> </td>
<td ><label>
<input name="pass" type="password">
</label><br><br>
</td>
</tr>
<tr>
<td align="right"><font size="2">Новый пароль</font> </td>
<td ><label>
<input name="newpass" type="password">
</label><br><br>
</td>
</tr>
<tr>
<td align="right"><font size="2">Ещё раз</font> </td>
<td ><label>
<input name="re_newpass" type="password">
</label>
</td>
</tr>
</table>
</div>
<br>
<label>
<input type="submit" name="Submit" value="Сменить пароль">
</label>
</form>
<?
End_page();
}
function End_page()
{
?>
Здесь футер вашей страницы - то, что идёт внизу страницы
<?
exit;
}
?>
После загрузки страницы должны появиться текстовые поля для ввода логина, текущего пароля, нового пароля, подтверждения нового пароля. Введите данные и нажмите кнопку "Выслать пароль". После этого будет предпринята попытка соединения с сервером MySql, который установлен на игровом сервере. Если попытка успешна, будет произведена сверка текущего пароля. Если пароль совпадает, на его место записывается новый. Причём парорль записывается в две таблицы. В основную - зашифрованный. И в служебную (которую создавали дополнительно). Если быть более точным, пароли не дописываются в таблицу, а обновляются в уже существующих строках таблиц.
Вы можете скачать файл с этим скриптом.