Вход Регистрация
Файл: lost_pass.php
Строк: 86
<?php
require_once ('shaxty.php');
$title 'Восстановление пароля';
$align 'left';
include_once (
'shaxty/head.php');

function 
passgen($length) {
    
$vals "abcdefghijklmnopqrstuvwxyz0123456789";
    for (
$i 1$i <= $length$i++) {
        
$result .= $vals{rand(0strlen($vals))};
    }
    return 
$result;
}

switch (
$act) {

     case 
'sent0':
        
// Принимаем и проверяем данные

$nick check($_POST['nick']);

        
$email_pass = isset($_POST['email_pass']) ? check($_POST['email_pass']) : '';
        
$code = isset($_POST['code']) ? check($_POST['code']) : '';
        
$error false;
        if (!
$nick || !$email_pass)
            
$error 'Необходимо заполнить все поля!';
        elseif (!isset(
$_SESSION['code']) || strlen2($code) < || $code != $_SESSION['code'])
            
$error 'Проверочный код введен неверно!';
        unset(
$_SESSION['code']);
        if (!
$error) {
            
// Проверяем данные по базе
$us2rus_lat(rus_utf_tolower($nick));
if (
ctype_digit($nick)) $sql "`id` = '$nick'";
elseif (!
ctype_digit($nick)) $sql "`ruser` = '$us2'";

$req mysql_query("SELECT * FROM `users` WHERE $sql LIMIT 1");

            if (
mysql_num_rows($req) == 1) {

                
$res mysql_fetch_array($req);
                if (empty(
$res['email_pass']) || $res['email_pass'] != $email_pass)
                    
$error 'E-mail адрес указан неверно';
                if (
$res['rest_time'] > $realtime 86400)
                    
$error 'Пароль можно восстанавливать не чаще 1 раза в сутки';
            } else {
                
$error 'Такой пользователь не зарегистрирован';
            }
        }
        if (!
$error) {


        echo 
'<form action="lost_pass.php?act=sent" method="post">';
        echo 
'Секретный вопрос: <b>'.$res['vopros_pass'].'</b> <br/><br />';
        echo 
'<b>Ответ:</b><br/><input type="text" name="otvet_pass" /><br />';

        echo 
'<input name="email_pass" type="hidden" value="'.$email_pass.'">
         <input name="nick" type="hidden" value="'
.$nick.'">
        <p><input type="submit" class="ibutton" value="Далее"/></p></form>'
;
        break;




        } else {
            
// Выводим сообщение об ошибке
            
echo '<div class="rmenu"><p>' $error '<br /><a href="lost_pass.php">Назад</a></p></div>';
        }
        break;



    case 
'sent':
        
// Принимаем и проверяем данные

$nick check($_POST['nick']);
$otvet_passcheck(rus_utf_tolower($_POST['otvet_pass']));

        
$email_pass = isset($_POST['email_pass']) ? check($_POST['email_pass']) : '';
        
//$code = isset($_POST['code']) ? check($_POST['code']) : '';
        
$error false;
        if (!
$nick || !$email_pass || !$otvet_pass)
            
$error 'Необходимо заполнить все поля!';
      
/*  elseif (!isset($_SESSION['code']) || strlen2($code) < 4 || $code != $_SESSION['code'])
            $error = 'Проверочный код введен неверно!';
        unset($_SESSION['code']);*/
        
if (!$error) {
            
// Проверяем данные по базе
$us2rus_lat(rus_utf_tolower($nick));
if (
ctype_digit($nick)) $sql "`id` = '$nick'";
elseif (!
ctype_digit($nick)) $sql "`ruser` = '$us2'";

$req mysql_query("SELECT * FROM `users` WHERE $sql LIMIT 1");

            if (
mysql_num_rows($req) == 1) {

                
$res mysql_fetch_array($req);
                if (empty(
$res['email_pass']) || $res['email_pass'] != $email_pass)
                    
$error 'E-mail адрес указан неверно';
                     if (empty(
$res['otvet_pass']) || $res['otvet_pass'] != $otvet_pass)
                    
$error 'Ответ на вопрос неверен';
                if (
$res['rest_time'] > $realtime 86400)
                    
$error 'Пароль можно восстанавливать не чаще 1 раза в сутки';
            } else {
                
$error 'Такой пользователь не зарегистрирован';
            }
        }
        if (!
$error) {
            
// Высылаем инструкции на E-mail
            
$subject 'Востановление пароля';
            
$mail "Здравствуйте, " $res['user'] . "rnВы начали процедуру восстановлению пароля на сайте http://".$_SERVER['HTTP_HOST']."rn";
            
$mail .= "Для того чтобы восстановить пароль, вам необходимо перейти по ссылке: nn http://".$_SERVER['HTTP_HOST']."/lost_pass.php?act=set&id=" $res['id'] . "&code=" session_id() . "nn";
            
$mail .= "Ссылка действительна в течение 1 часаrn";
            
$mail .= "Если это письмо попало к вам по ошибке или вы не собираетесь восстанавливать пароль, то просто проигнорируйте его";

            if (
addmail($res['email_pass'], "Востановление пароля на сайте ".$imjasajta$mail))
             {
                
mysql_query("UPDATE `users` SET `rest_code` = '" session_id() . "', `rest_time` = '$realtime' WHERE `id` = '" $res['id'] . "'");
                echo 
'<div class="gmenu"><p>Инструкции по восстановлению пароля высланы на указанный Вами адрес E-mail</p></div>';
            } else {
                echo 
'<div class="rmenu"><p>Ошибка отправки E-mail</p></div>';
            }
        } else {
            
// Выводим сообщение об ошибке
            
echo '<div class="rmenu"><p>' $error '<br /><a href="lost_pass.php">Назад</a></p></div>';
        }
        break;

    case 
'set':
        
$code = isset($_GET['code']) ? check($_GET['code']) : '';
        
$error false;
        if (!
$id || !$code)
            
$error 'Отсутствуют необходимые данные';
        
$req mysql_query("SELECT * FROM `users` WHERE `id` = '$id' LIMIT 1");
        if (
mysql_num_rows($req) == 1) {
            
$res mysql_fetch_array($req);
            if (empty(
$res['rest_code']) || empty($res['rest_time']) || $code != $res['rest_code']) {
                
$error 'Восстановление пароля невозможно';
            }
            if (!
$error && $res['rest_time'] < $realtime 3600) {
                
$error 'Время, отведенное на восстановления пароля прошло';
                
mysql_query("UPDATE `users` SET `rest_code` = '', `rest_time` = '' WHERE `id` = '$id'");
            }
        } else {
            
$error 'Такого пользователя нет';
        }
        if (!
$error) {
            
// Высылаем пароль на E-mail
            
$pass passgen(6);
            
$subject 'Ваш новый пароль';
            
$mail "Здравствуйте, " $res['user'] . "rnВы изменили пароль на сайте " $home "rn";
            
$mail .= "Ваш новый пароль: $pass rn";
            
$mail .= "После входа на сайт, Вы сможете сменить пароль на другой, какой пожелаете.";

             if (
addmail($res['email_pass'], "Ваш новый пароль на сайте ".$imjasajta$mail))
             {
                
mysql_query("UPDATE `users` SET `rest_code` = '', `pass` = '" md5(md5($pass)) . "' WHERE `id` = '$id'");

                echo 
'<div class="gmenu"><p>Пароль успешно изменен.<br />Новый пароль выслан на ваш адрес E-mail</p></div>';
            } else {
                echo 
'<div class="rmenu"><p>Ошибка отправки E-mail</p></div>';
            }
        } else {
            
// Выводим сообщение об ошибке
            
echo '<div class="rmenu"><p>' $error '</p></div>';
        }
        break;

    default:

        echo 
'<form action="lost_pass.php?act=sent0" method="post">';
        echo 
'<b>Ваш ник или id:</b><br/><input type="text" name="nick" /><br/>';
        echo 
'<b>Ваш e-mail:</b><br/><input type="text" name="email_pass" /><br />';
       echo 
'<img src="shaxty_code.php?r='.rand(10009999).'" alt="Проверочный код"/><br />';
echo 
'<b>Код с картинки:</b><br/><input type="text" size="5" maxlength="5"  name="code"/><br />';
        echo 
'<p><input type="submit" class="ibutton" value="Далее"/></p></form>';
        echo 
'<small>Пароль будет выслан на E-mail Адрес, указанный Вами.<br />ВНИМЕНИЕ! Если в анкете не был указан E-mail адрес, то Вы не сможете восстановить пароль</small><br />';
        break;
}


include_once (
'shaxty/foot.php');
/* by -=ШАХТЕР=- (waphp.ru - качай только тут) */ ?>
Онлайн: 0
Реклама