Файл: recall.php
Строк: 50
<?php
require 'sys/sid.php';
require 'sys/config.php';
include 'sys/head.php';
if (isset($_GET['id']) && !isset($_POST['ok']))
{
    $id = char($_GET['id'], 0);
    $sql = mysql_query("SELECT id, email, nick FROM users WHERE recall = '$id' LIMIT 1");
    if (mysql_num_rows($sql) == false)
    {
        err('Восстановление невозможно!');
    }
    else
    {
        $isMail = mysql_fetch_assoc($sql);
        $rand = genPass(6);
        $subject = 'Изменение пароля на http://' . $_SERVER['HTTP_HOST'];
        $regmail = 'Здравствуйте ' . $isMail['nick'] . '!<br/>
                    Вами был изменен пароль на http://' . $_SERVER['HTTP_HOST'] . '. Новый пароль: ' . $rand;
        $adds = "From: "$_SERVER[HTTP_HOST]" <$_SERVER[HTTP_HOST]>n";
        $adds = "Content-Type: text/html; charset=utf-8n";
        mail($isMail['email'], '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
        mysql_query("UPDATE users SET password = '" . md5(sha1($rand)) . "' WHERE recall = '$id' LIMIT 1");
        mysql_query("UPDATE users SET recall = '' WHERE recall = '$id' LIMIT 1");
        msg('Пароль был изменен! Новый пароль выслан на Ваш email.');
    }
}
if (isset($_POST['ok']) && !isset($_GET['id']))
{
    $nick = trim(mysql_real_escape_string(char($_POST['nick'], 0)));
    $email = trim(mysql_real_escape_string(char($_POST['email'], 0)));
    $control = mysql_query("SELECT id FROM users WHERE recall != '' AND nick = '$nick' AND email = '$email' LIMIT 1");
    if (empty($nick))
    {
        err('Необходимо ввести игровой ник!');
    }
    elseif (empty($email))
    {
        err('Необходимо ввести email!');
    }
    elseif (mysql_num_rows($control) != false)
    {
        err('Письмо с инструкциями уже было отправлено ранее, проверьте почту.');
    }
    else
    {
        $sql = mysql_query("SELECT email FROM users WHERE nick = '$nick' AND email = '$email' LIMIT 1");
        if (mysql_num_rows($sql) == false)
        {
            err('Игрок с таким ником и email'ом не найден, восстановление невозможно!');
        }
        else
        {
            $rand = genPass(20);
            mysql_query("UPDATE users SET recall = '$rand' WHERE nick = '$nick' AND email = '$email' LIMIT 1");
            $subject = 'Восстановление пароля на http://' . $_SERVER['HTTP_HOST'];
            $regmail = 'Здравствуйте ' . $nick . '!<br/>
                        Вы запрашивали восстановление пароля учётной записи на http://' . $_SERVER['HTTP_HOST'] . '.<br/>
                        Перейдите по следующей ссылке для продолжения http://' . $_SERVER['HTTP_HOST'] . '/remind_'.$rand.'<br/>
                        Если Вы не запрашивали восстановление пароля - просто проигнорируйте это сообщение.';
            $adds = "From: "$_SERVER[HTTP_HOST]" <$_SERVER[HTTP_HOST]>n";
            $adds = "Content-Type: text/html; charset=utf-8n";
            mail($email, '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
            msg('Письмо с инструкциями отправлено Вам на email.');
        }
    }
}
echo '<form method="post" action="recall.php">
      Ник в игре:
      <br/>
      <input type="text" name="nick"/>
      <br/>
      Email:
      <br/>
      <input type="text" name="email"/>
      <br/>
      <input type="submit" name="ok" value="Восстановить"/>
      </form>
      <a href="/">На главную</a>';
include 'sys/foot.php';
?>