Файл: user/phone.php
Строк: 164
<?
include_once '../sys/inc/start.php';
include_once '../sys/inc/compress.php';
include_once '../sys/inc/sess.php';
include_once '../sys/inc/home.php';
include_once '../sys/inc/settings.php';
include_once '../sys/inc/db_connect.php';
include_once '../sys/inc/ipua.php';
include_once '../sys/inc/fnc.php';
include_once '../sys/inc/user.php';
only_reg();
include_once '../sys/inc/shif.php';
$_SESSION['phone'] = null;
if (isset($_GET['smena']))
$_SESSION['smena'] = true;
if (isset($_GET['smena']) && $_GET['smena'] == 1)
$_SESSION['smena'] = null;
// Класс обработчика
include_once H.'sys/inc/smsc_api.php';
// Уведомление 
if ($set['smsc_no_balans'] >= abs(intval(get_balance())) && $set['smsc_no_balans_time'] < time() - 60*60*24)
{
    // отправка сообщения
    $msgg = "Здравствуйте, на вашем аккаунте [b]Smsc.Ru[/b] денежных средств осталось: [b]" . abs(get_balance()) . "[/b] единиц.";
    mysql_query("INSERT INTO `mail` (`id_user`, `id_kont`, `msg`, `time`) values('0', '1', '".my_esc($msgg)."', '$time')");
    
    $temp_set = $set;
    $temp_set['smsc_no_balans_time'] = time();
    @save_settings($temp_set);
}
// Отправка пароля
if (isset($_POST["phone"]) && !isset($_POST["mypass"]) && $set['smsc_on'] == 1) 
{ 
    // Номер телефона
    $phone = abs($_POST["phone"]);
    $_SESSION['phone'] = $phone;
    
    if (!preg_match('/^((+?7|8)(?!95[4-79]|99[^2457]|907|94[^0]|336)([348]d|9[0-689]|7[07])d{8}|+?(99[^456]d{7,11}|994d{9}|9955d{8}|996[57]d{8}|380[34569]d{8}|375[234]d{8}|372d{7,8}|37[0-4]d{8}))$/', $phone) || !is_numeric($phone))
    $err = 'Неверный формат номера';
    
    $pass = mt_rand(1111, 9999);
    $pass_link = shif($user['pass'] . $phone);    
    
    
    if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `phone` = '".$phone."' AND `id` != '$user[id]'"),0) != 0)
    $err[] = 'Пользователь с этим номером уже зарегистрирован';
    
    if (isset($_SESSION['flood']) && $_SESSION['flood'] > time() - 300) 
    $err[] = 'Cлишком частые попытки';
    
    // Отправляем сообщение
    if (!$err)
    {
        $r = send_sms($phone, "Kod: $pass");
    
        if ($r[1] > 0) 
        {    
            if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `id_user` = '$user[id]'"),0) == 1)
            {
                
                // Записываем в логи
                $log = ' Изменение номера ';
                mysql_query("INSERT INTO `user_reg_log` (`time`, `id_user`, `phone`, `msg`, `ip`, `ip_cl`, `ip_xff`, `ua`) 
                VALUES ('$time', '$user[id]', '$phone', '$log', '".ip2long($ip2['add'])."', '".ip2long($ip2['cl'])."', '".ip2long($ip2['xff'])."', '".my_esc($ua)."')");
                
                mysql_query("DELETE FROM `user_reg` WHERE `id_user` = '$user[id]'");
                mysql_query("INSERT INTO `user_reg` (`time`, `id_user`, `phone`, `pass`, `show_pass`, `aut`) VALUES 
                ('$time', '$user[id]', '$phone', '".shif($pass)."', '".$pass."', '$pass_link')");
            }
            else
            {
                mysql_query("INSERT INTO `user_reg` (`time`, `id_user`, `phone`, `pass`, `show_pass`, `aut`) VALUES 
                ('$time', '$user[id]', '$phone', '".shif($pass)."', '".$pass."', '$pass_link')");
                
                // Записываем в логи
                $log = ' Подтверждение номера ';
                mysql_query("INSERT INTO `user_reg_log` (`time`, `id_user`, `phone`, `msg`, `ip`, `ip_cl`, `ip_xff`, `ua`) 
                VALUES ('$time', '$user[id]', '$phone', '$log', '".ip2long($ip2['add'])."', '".ip2long($ip2['cl'])."', '".ip2long($ip2['xff'])."', '".my_esc($ua)."')");
            }
            
            $_SESSION['flood'] = time();
            setcookie('phone', $phone, time()+60*60*24*365);
            
            $_SESSION['message'] = 'Код успешно отправлен';    
            header('Location: ?enter');
            exit;
        }
    }
}
// Подтверждаем
if (isset($_GET['enter']))
{
    // Чистим куки
    if ($_GET['enter'] == 1)
    $_COOKIE['phone'] = null; 
    
    if (isset($_POST['password']) && isset($_POST['mypass']))
    {
        if (shif($_POST['mypass']) != $user['pass'])
        $err[] = 'Неверный пароль';
        
        if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' AND (`id_user` = '0' OR `id_user` = '$user[id]')"),0) == 0)
        $err[] = 'Неверный код подтверждения';
        
        if (!$err)
        {
            $user_tmp = mysql_fetch_assoc(mysql_query("SELECT * FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' AND (`id_user` = '0' OR `id_user` = '$user[id]') LIMIT 1"));
            
            $mypass = esc($_POST['mypass']);
            
            mysql_query("UPDATE `user` SET `phone` = '$user_tmp[phone]' WHERE `id` = '$user[id]' LIMIT 1");
            
            $pass = esc($_POST['password']);
            
            // Запись для автовхода
            mysql_query("UPDATE `user_reg` SET `pass` = '".shif($mypass)."', `aut` = '".shif($mypass . $user_tmp['phone'])."', `show_pass` = '".$mypass."' WHERE `phone` = '".$user_tmp['phone']."' LIMIT 1");
            
            // отправка сообщения
            $msgg = "Уважаемый ".user::nick($user['id'], 0).", вы успешно ".($user_tmp['id_user'] == 0 ? "подтвердили" : "изменили")." свой номер мобильного телефона! :)";
            mysql_query("INSERT INTO `mail` (`id_user`, `id_kont`, `msg`, `time`) values('0', '$user[id]', '".my_esc($msgg)."', '$time')");
            
            $_SESSION['smena'] = null;
            setcookie('phone', null, time());
            header('Location: ?enter');
            exit;
        }
    }
}
$set['title'] = 'Подтверждение номера телефона'; // заголовок страницы
include_once '../sys/inc/thead.php';
title();
aut();
err();
echo '<div class="foot">';
echo '<img src="/style/icons/str2.gif" alt="*" /> <a href="/id' . $user['id'] . '">' . user::nick($user['id']) . '</a> | <b>Номер мобильного</b>';
echo '</div>';
if (isset($_GET['enter']))
{
    echo '<div class="mess">';
    echo 'Уважаемый '.user::nick($user['id'], 0).', вы успешно подтвердили свой номер мобильного телефона!<br />';
    echo '</div>';
}
else
{
    if (!isset($user['phone']) || isset($_SESSION['smena']))
    {
        echo '<div class="mess">';
        if ($set['smsc_all'])
        {
            echo 'Вам необходимо указать номер своего мобильного телефона.<br />';
        }
        echo 'Подтвердите номер своего мобильного телефона, и станьте полноценным обитателем ' . text($_SERVER['HTTP_HOST']);
        echo '</div>';    
    }
}
echo '<div class="nav2">';
if (!isset($user['phone']) || isset($_SESSION['smena']))
{
    if (!isset($_COOKIE['phone']))
    {
        ?>
        Ваш номер:<br />
        
        <form action="?" method="POST">
        <input type="text" name="phone" size="12" value="<?=$_SESSION['phone']?>"><br />
        <span style="color:gray">(Например, 79110123456)</span><br /><br />
        <input type="submit" value="Продолжить" name="sendsms"/>
        </form>
        <?    
        if (isset($_SESSION['smena']))    
        echo '<br /><a href="?smena=1">Не изменять</a>';
    }
    else
    {
        ?>
        <form method="post" action="?enter">
        На ваш номер <span style="color:green"><b><?=abs($_COOKIE['phone'])?></b></span> отправлен код для подтверждения.<br/><br/>
        Введите код здесь:<br />
        <input name="password" size="6" maxlength="4" type="text" value=""><br/>
        Текущий пароль:<br />
        <input name="mypass" size="12" maxlength="20" type="text" value=""><br/>
        <input type="hidden" name="phone" value="<?=abs($_COOKIE['phone'])?>"/>
        <input type="submit" value="Сохранить" />
        </form> 
        
        <div class="mess">
            Если СМС не пришло в течение 10 минут, попробуйте <a href="?enter=1"><b>повторить отправку</b></a>.
        </div>
        <?        
    }    
}
else
{
    echo '<img src="/style/icons/ok.gif" /> <b style="color:green">' . $user['phone'] . '</b><br /><a href="?smena">Изменить</a>';
}
echo '</div>';
echo '<div class="foot">';
echo '<img src="/style/icons/str2.gif" alt="*" /> <a href="/id' . $user['id'] . '">' . user::nick($user['id']) . '</a> | <b>Номер мобильного</b>';
echo '</div>';
include_once '../sys/inc/tfoot.php';
?>