Файл: 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]&activation=$key'>http://$_SERVER[HTTP_HOST]/pages/reg.php?id=$user[id]&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';