Файл: _scripts/registration.php
Строк: 168
<?
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/shif.php';
$show_all = true; // показ для всех
if (!isset($_SESSION['phone']))$_SESSION['phone'] = null;
include_once 'sys/inc/user.php';
only_unreg();
// Класс обработчика
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["sendsms"])) 
{ 
    // Номер телефона
    $phone = abs($_POST["phone"]);
    $_SESSION['phone'] = $phone;
    
    if (!preg_match('/^+?([87](?!95[4-79]|99[^2457]|907|94[^0]|336|986)([348]d|9[0-689]|7[0247])d{8}|[1246]d{9,13}|68d{7}|5[1-46-9]d{8,12}|55[1-9]d{9}|55119d{8}|500[56]d{4}|5016d{6}|5068d{7}|502[45]d{7}|5037d{7}|50[457]d{8}|50855d{4}|509[34]d{7}|376d{6}|855d{8}|856d{10}|85[0-4789]d{8,10}|8[68]d{10,11}|8[14]d{10}|82d{9,10}|852d{8}|90d{10}|96(0[79]|17[01]|13)d{6}|96[23]d{9}|964d{10}|96(5[69]|89)d{7}|96(65|77)d{8}|92[023]d{9}|91[1879]d{9}|9[34]7d{8}|959d{7}|989d{9}|97d{8,12}|99[^4568]d{7,11}|994d{9}|9955d{8}|996[57]d{8}|9989d{8}|380[34569]d{8}|381d{9}|385d{8,9}|375[234]d{8}|372d{7,8}|37[0-4]d{8}|37[6-9]d{7,11}|30[69]d{9}|34[67]d{8}|3[12359]d{8,12}|36d{9}|38[1679]d{8}|382d{8,9})$/', $phone) || !is_numeric($phone))
    $err = 'Неверный формат номера';
    
    
    if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `phone` = '".$phone."'"),0) == 0)
    {
        // Генерация пароля
        if ($set['smsc_gen_pass'] == 1)
            $pass = mt_rand(111111, 999999);
        elseif ($set['smsc_gen_pass'] == 0)
            $pass = passgen(6, 2);
        else $err = 'Ошибка при генерации пароля';    
        
        $pass_link = shif($pass . $phone);    
    }
    else
    {
        $user_tmp = mysql_fetch_assoc(mysql_query("SELECT * FROM `user_reg` WHERE `phone` = '".abs($_POST['phone'])."' LIMIT 1"));
        $pass = $user_tmp['show_pass'];
        $pass_link = $user_tmp['pass'];
    }
    
    if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `phone` = '".$phone."'"),0) != 0)
    $err[] = 'Пользователь с этим номером уже зарегистрирован';
    
    if (isset($_SESSION['flood']) && $_SESSION['flood'] > time() - 300) 
    $err[] = 'Cлишком частые попытки';
    
    // Отправляем сообщение
    if (!$err)$r = send_sms($phone, "Bxod: http://" . $_SERVER['HTTP_HOST'] . "/pm/" . $pass_link . "nParol: $pass");
    
    if ($r[1] > 0) 
    {
        if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `phone` = '".$phone."'"),0) == 0)
        mysql_query("INSERT INTO `user_reg` (`time`, `id_user`, `phone`, `pass`, `show_pass`, `aut`) VALUES ('$time', '0', '$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', '0', '$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($_GET['reg']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `show_pass` = '".my_esc($_GET['reg'])."' AND `pass` = '".my_esc($_GET['pass'])."'"),0) == 1)
    {
        $_POST['password'] = $_GET['reg'];
    }
    
    if (isset($_POST['password']))
    {
        if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' AND `id_user` = '0'"),0) == 1)
        {
            $user_tmp = mysql_fetch_assoc(mysql_query("SELECT * FROM `user_reg` WHERE `pass` = '".shif(my_esc($_POST['password']))."' LIMIT 1"));
            
            mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `set_nick`, `phone`) values('$time', '".shif($_POST['password'])."', '$time', '$time', '1', '$user_tmp[phone]')");
            
            // Определяем нового юзера
            $user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `phone` = '$user_tmp[phone]' AND `pass` = '".shif($_POST['password'])."' LIMIT 1"));
            
            /*
            * Подгрузка запросов, необходимых при регистрации
            */
            $_opendirbase = opendir(H.'sys/add/reg');
            while ($_filebase = readdir($_opendirbase))
            {
                if (preg_match('#.php$#i', $_filebase))
                {
                    require_once(H.'sys/add/reg/' . $_filebase);
                }
            }
            
            $nick = 'id' . $user['id'];
            
            if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user_reg` WHERE `nick` = '".$nick."'"),0) == 1)
            $nick = $nick . '_' . $time;
            
            mysql_query("UPDATE `user` SET `nick` = '$nick' WHERE `id` = '$user[id]' LIMIT 1");
            
            $pass = esc($_POST['password']);
            
            // Запись для автовхода
            mysql_query("UPDATE `user_reg` SET `id_user` = '$user[id]' WHERE `phone` = '".$user_tmp['phone']."' LIMIT 1");
            
            // отправка сообщения
            $msgg = "Уважаемый $nick, поздравляем с успешной регистрацией на сайте! .дружба. n Ваши регистрационные данные: n логин: $nick пароль: $pass . nИзменить свой ник вы можете [url=/user/info/edit.php?set=nick]ТУТ[/url]";
            mysql_query("INSERT INTO `mail` (`id_user`, `id_kont`, `msg`, `time`) values('0', '$user[id]', '".my_esc($msgg)."', '$time')");
            
            $_SESSION['id_user'] = $user['id'];
            setcookie('id_user', $user['id'], time() + 60*60*24*365);
            setcookie('pass', cookie_encrypt($pass,$user['id']), time()+60*60*24*365);
            setcookie('phone', null, time());
            $_SESSION['message'] = 'Регистрация прошла успешно';
            header('Location: /umenu.php');
            exit;
        }
        else $err[] = 'Неверный пароль';
    }
}
$set['title'] = 'Регистрация на сайте';
include_once 'sys/inc/thead.php';
title();
aut();
err();
?>        
<div class="foot">
<img src="/style/icons/str.gif" alt="*" /> Регистрация
</div>
<div class="nav2">
<?
if (isset($_GET['info']))
{
    ?>
    Номер вашего мобильного вводите в международном формате, он должен начинаться с кода вашей страны.
    Обратите внимание, именно с кода страны, а не с кода вашего города.
    Номер можно вводить как со знаком плюс, так и без него.<br/><br/>
    Примеры правильного ввода номеров в международном формате для популярных стран:<br/><br/>
    Россия - <b class="service_item">79001001010</b> или <b class="service_item">+79001001010</b>, где <b class="service_item">7</b> - это код страны<br/>
    Украина - <b class="service_item">380600000000</b>, где <b class="service_item">38</b> - это код страны<br/>
    Беларусь - <b class="service_item">375000000000</b>, где <b class="service_item">375</b> - это код страны<br/><br/>
    Вводить можно только федеральные мобильные номера, городские номера не поддерживаются.<br/>
    Если у вас не получается ввести номер, то обратитесь к вашему оператору и спросите у него "Как правильно записать мой федеральный мобильный номер в международном формате?".<br/><br/>
    <img src="/style/icons/str2.gif" alt="*" /> <a href="?">Назад</a>
    <?
}
else
{
    if (!isset($_COOKIE['phone']))
    {
        ?>
        Для быстрой регистрации введите свой номер телефона
        <?
        if ($set['smsc_reg'] == 1)
        {
            ?>
             или <a style="color: blue;" href="/reg.php">нажмите здесь</a> для регистрации без номера.
            <?        
        }
        ?>
        <br /><br />Ваш номер:<br />
        
        <form action="?" method="POST">
        <input type="text" name="phone" size="12" value="<?=$_SESSION['phone']?>"><br />
        <span style="color:gray">(Например, 79110123456)</span><br /><br />
        Пароль будет отправлен на ваш номер. Никто не увидит ваш номер на сайте.<br/><br/>
        Регистрируясь на сайте, вы соглашаетесь с <a href="/rules.php">правилами сайта</a>.<br/>
        <input type="submit" value="Продолжить" name="sendsms"/>
        </form>
        <br />
        <a style="color:blue;" href="?info">Как правильно вводить номер?</a><br/>
        <a style="color:blue;" href="/secure.php">Восстановление пароля</a><br/>
        <?        
    }
    else
    {
        ?>
        <form method="post" action="?enter">
        На ваш номер <span style="color:green"><b><?=abs($_COOKIE['phone'])?></b></span> отправлен пароль и ссылка для входа.<br/><br/>
        Введите пароль здесь:<br/>
        <input name="password" size="12" maxlength="6" 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>
        <?        
    }
}
?>
</div>
<div class="foot">
<img src="/style/icons/str.gif" alt="*" /> Регистрация
</div>
<?
include_once 'sys/inc/tfoot.php';
?>