Вход Регистрация
Файл: pages/registration.php
Строк: 120
<?php
    
include '../engine/includes/start.php';

    
$set['title'] = 'Регистрация';

    include 
H . 'engine/includes/head.php';

    if (
$user_id){
        
Core::stop('/pages/user.php');
    }


    if (isset(
$_GET['activation']) && $id){
        if (
$sql->query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . $id . "' AND `activation` = '" . my_esc($_GET['activation']) . "'")->result() !== '0'){
            
$sql->query("UPDATE `user` SET `activation` = 'null' WHERE `id` = '$id'");
            
$user['password'] = $sql->query("SELECT `password` FROM `user` WHERE `id` = '$id'")->result();
            
Core::msg_show('Ваш аккаунт успешно активирован');

            
setcookie('user_id', $id, $time + 60 * 60 * 24 * 365, '/');
            
setcookie('pass', $user['password'], $time + 60 * 60 * 24 * 365, '/');

            echo 
'<a href="/pages/user.php">Перейти в свой кабинет</a>';

            include 
H . 'engine/includes/foot.php';
        }
        else{
            
Core::msg_show('Ошибка активации аккаунта');
        }
    }

    if (
Core::form('reg_login')){
        
$valid = new Validator($_POST['reg_login'], array('login' => 'Логин'));

        
$rules = array(
            array(
'login', 'require'), array('login', 'length', array('min' => 3, 'max' => 16)), array('login', 'login'), array('token', 'token'),);

        
$rule = array(array('login', 'in_table', array('table' => 'user', 'row' => 'nick')));

        if (
$valid->check($rules) == true){
            if (
$valid->check($rule) == true){
                
Core::msg_show('Данный логин уже занят');
            }
            else{
                
$_SESSION['selected_login'] = trim($_POST['reg_login']['login']);
            }
        }
        else{
            
Core::msg_show($valid->errors);
        }
    }

    if (isset(
$_SESSION['selected_login'])){
        if (isset(
$_POST['auth'])){
            
$valid = new Validator($_POST['reg'], array('password' => 'Пароль', 'sex' => 'Пол', 'password2' => 'Повтор пароля', 'captcha' => 'Проверочный код',));

            
$rules = array(
                array(
'password, password2', 'require'),
                array(
'password', 'length',
                    array(
'min' => 6)),
                array(
'password', 'compare', 'password2'),
                array(
'captcha', 'captcha'),
                array(
'sex', 'default', '1'),
                array(
'sex', 'in_list', array(0, 1)));

            if (isset(
$set['reg_select']) && $set['reg_select'] == 'open_mail'){
                
$rules[] = array('email', 'require');
                
$rules[] = array('email', 'email');
            }


            if (
$valid->check($rules)){
                
$status = $sql->query('SHOW TABLE STATUS LIKE "user"')->fetch();
                
$password = md5($status['Auto_increment'] . Core::form('reg', 'password'));
                
$login = my_esc($_SESSION['selected_login'], 'true');
                
$sex = intval(Core::form('reg', 'sex'));

                if (!empty(
$set['activation_acc'])){
                    
$key = md5(mt_rand());
                    
$email = Core::form('reg', 'email');

                    
$sql->query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `activation`, `pol`, `ank_mail`) VALUES ('$login', '$password', '$time', '$time', '$key', '$sex', '$email')");
                    
$user['id'] = $sql->query("SELECT * FROM `user` WHERE `nick` = '" . $login . "' LIMIT 1")->result();
                    
$user = Core::get_user($user['id'], true);

                    
$subject = "Активация аккаунта";
                    
$regmail = "Здравствуйте $login<br />
                    Для активации Вашего аккаунта перейдите по ссылке:<br />
                    <a href='http://
$_SERVER[HTTP_HOST]/pages/registration.php?id=$user[id]&amp;activation=$key'>http://$_SERVER[HTTP_HOST]/pages/reg.php?id=$user[id]&amp;activation=$key</a><br />
                    Если аккаунт не будет активирован в течении 24 часов, он будет удален<br />
                    С уважением, администрация сайта<br />"
;
                    
$adds = "From: "password@$_SERVER[HTTP_HOST]" <password@$_SERVER[HTTP_HOST]>n";
                    
$adds .= "Content-Type: text/html; charset=utf-8n";
                    
mail($_POST['email'], '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);

                    
Core::msg_show('Вам необходимо активировать Ваш аккаунт по ссылке, высланной на E-mail');

                    include 
H . 'engine/includes/foot.php';
                }
                else{
                    
$sql->query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `pol`, `ip`, `ua`)
                    VALUES ('
$login', '$password', '$time', '$time', '$sex', '" . ip2long($_SERVER['REMOTE_ADDR']) . "', '" . my_esc($_SERVER['HTTP_USER_AGENT'],
                                                                                                                                     
true) . "')");
                    
$user = $sql->query("SELECT * FROM `user` WHERE `nick` = '" . $login . "' LIMIT 1")->result();
                    
$user = Core::get_user($user, true);
                    
setcookie('user_id', $user['id'], $time + 60 * 60 * 24 * 365, '/');
                    
setcookie('pass', $password, $time + 60 * 60 * 24 * 365, '/');
                    
$res = mysqli_query($sql->db, 'select `file` from `module_services` where `use_in` ="reg"');
                    while (
$file = $sql->result($res)) {
                        include_once 
H . $file;
                    }
                    unset(
$_SESSION['selected_login']);
                    
?>
                    Вы успешно зарегистрировались<br/>
                    <a href="/pages/user.php">
                        <div class="link">Перейти в свой кабинет</div>
                    </a>
                    <?
                    
include H . 'engine/includes/foot.php';
                }
            }
            else{
                
Core::msg_show($valid->errors);
            }
        }

        echo 
'<div class="menu_razd">Регистрация ника: ' . $_SESSION['selected_login'] . '</div>';
        
?>
        <form method="POST" name="reg">


            <?
                
if (!empty($set['activation_acc'])){
                    
?>
                    E-mail:<br/>
                    <input type="text" name="reg[email]" value="<?= Core::form('reg', 'email') ?>"/><br/>
                <?
                
}
            
?>

            Пол:<br/>
            <select name="reg[sex]">
                <option value="1">Мужской</option>
                <option value="0">Женский</option>
            </select><br/>

            Пароль:<br/>
            <input type="password" name="reg[password]" value="<?= Core::form('reg', 'password') ?>"/><br/>

            Повтор пароля:<br/>
            <input type="password" name="reg[password2]" value="<?= Core::form('reg', 'password2') ?>"/><br/>

            <img src="/pages/captcha.php"/><br/>

            Проверочный код:<br/>
            <input type="text" name="reg[captcha]"/><br/>

            <input type="submit" name="auth" value="Зарегистрироваться"/>

        </form>
    <?
    
}
    else{
        
?>
        <form method="POST" name="reg_login">
            <label> Выберите логин: (от 3 до 16 символов)<br/>
                <input type="text" name="reg_login[login]" value=""/>
            </label><br/>
            <input type="hidden" name="reg_login[token]" value="<?= CSRF::generate('token') ?>"/>
            <input type="submit" value="Выбрать"/>
        </form>
    <?php
    
}

    include 
H . 'engine/includes/foot.php';
Онлайн: 2
Реклама