Файл: reg.php
Строк: 197
<?php
/* Мод "Регистрация"
* Версия v0.0.1
* Дата последнего редактирования 07.01.2015
* Двиг DCMS Special
* Модифицировал densnet
* Файл reg.php
* Описание: Регистрация пользователя
*/
require_once 'sys/inc/start.php';
require_once 'sys/inc/compress.php';
require_once 'sys/inc/sess.php';
require_once 'sys/inc/settings.php';
require_once 'sys/inc/db_connect.php';
require_once 'sys/inc/ipua.php';
require_once 'sys/inc/fnc.php';
$show_all = true;
require_once 'sys/inc/user.php';
user::only_unreg();
$set['title'] = 'Регистрация';
require_once 'sys/inc/thead.php';
if ((!isset($_SESSION['refer']) || $_SESSION['refer'] == NULL) && isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != NULL &&
!preg_match('#mail.php#', $_SERVER['HTTP_REFERER'])) {
$_SESSION['refer'] = str_replace('&', '&', preg_replace('#^http://[^/]*/#', '/', $_SERVER['HTTP_REFERER']));
}
if ($set['reg_select'] == 'close') {
title();
echo "<div class = 'errs'>Регистрация временно приостановлена<br />Попробуйте позже</div>";
echo "<a href = '/aut.php'><div class = 'razd'>" . img16('left.png') . " Авторизация</div></a>";
require_once 'sys/inc/tfoot.php';
} elseif ($set['reg_select'] == 'open_mail' && isset($_GET['id']) && isset($_GET['activation']) && $_GET['activation'] != NULL) {
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' AND `activation` = '" . mysql_real_escape_string($_GET['activation']) . "'"), 0) == 1) {
mysql_query("UPDATE `user` SET `activation` = null WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1");
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1"));
mysql_query("INSERT INTO `reg_mail` (`id_user`,`mail`) VALUES ('$user[id]','$user[ank_mail]')");
msg('Ваш аккаунт успешно активирован');
$_SESSION['id_user'] = $user['id'];
require_once 'sys/inc/tfoot.php';
}
}
if (isset($_SESSION['step']) && $_SESSION['step'] == 1 && mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . $_SESSION['reg_nick'] . "'"), 0) == 0 && isset($_POST['pass1']) && $_POST['pass1'] != NULL && $_POST['pass2'] && $_POST['pass2'] != NULL) {
if ($set['reg_select'] == 'open_mail') {
if (!isset($_POST['ank_mail']) || $_POST['ank_mail'] == NULL) {
$err[] = 'Неоходимо ввести Email';
} elseif (!preg_match('#^[A-z0-9-._]+@[A-z0-9]{2,}.[A-z]{2,4}$#ui', $_POST['ank_mail'])) {
$err[] = 'Неверный формат Email';
} elseif (mysql_result(mysql_query("SELECT COUNT(*) FROM `reg_mail` WHERE `mail` = '" . mysql_real_escape_string($_POST['ank_mail']) . "'"), 0) != 0) {
$err[] = "Пользователь с этим E-mail уже зарегистрирован";
}
}
if (text::utf8_strlen($_POST['pass1']) < 6) {
$err[] = 'По соображениям безопасности пароль не может быть короче 6-ти символов';
}
if (text::utf8_strlen($_POST['pass1']) > 32) {
$err[] = 'Длина пароля превышает 32 символа';
}
if ($_POST['pass1'] != $_POST['pass2']) {
$err[] = 'Пароли не совпадают';
}
if (!isset($_SESSION['captcha']) || !isset($_POST['chislo']) || $_SESSION['captcha'] != $_POST['chislo']) {
$err[] = 'Неверное проверочное число';
}
if (!isset($err)) {
if ($set['reg_select'] == 'open_mail') {
$activation = md5(passgen());
mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `sex`, `activation`, `ank_mail`) values('" . $_SESSION['reg_nick'] . "', '" . crypt::hash($_POST['pass1']) . "', '$time', '$time', '" . intval($_POST['sex']) . "', '$activation', '" . mysql_real_escape_string($_POST['ank_mail']) . "')", $db);
$id_reg = mysql_insert_id();
$subject = "Активация аккаунта";
$regmail = "Здравствуйте $_SESSION[reg_nick]<br />
Для активации Вашего аккаунта перейдите по ссылке:<br />
<a href='http://$_SERVER[HTTP_HOST]/reg.php?id=$id_reg&activation=$activation'>http://$_SERVER[HTTP_HOST]/reg.php?id=" . mysql_insert_id() . "&activation=$activation</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['ank_mail'], '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);
} else {
mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_last`, `sex`) values('" . $_SESSION['reg_nick'] . "', '" . crypt::hash($_POST['pass1']) . "', '$time', '$time', '" . intval($_POST['sex']) . "')", $db);
}
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_SESSION['reg_nick']) . "' AND `pass` = '" . crypt::hash($_POST['pass1']) . "' LIMIT 1"));
if (isset($_SESSION['http_referer'])) {
mysql_query("INSERT INTO `user_ref` (`time`, `id_user`, `type_input`, `url`) VALUES ('$time', '$user[id]', 'reg', '" . mysql_real_escape_string($_SESSION['http_referer']) . "')");
}
$_SESSION['id_user'] = $user['id'];
setcookie('id_user', $user['id'], time() + 60 * 60 * 24 * 365);
setcookie('pass', crypt::encrypt($_POST['pass1'], $user['id']), time() + 60 * 60 * 24 * 365);
if ($set['reg_select'] == 'open_mail') {
msg('Вам необходимо активировать Ваш аккаунт по ссылке, высланной на Email');
} else {
msg('Регистрация прошла успешно');
}
echo "<div class = 'razd'>";
echo "Если Ваш браузер не поддерживает Cookie, Вы можете создать закладку для автовхода<br />";
echo "<div class = 'inputs'>";
echo "<input type='text' value='http://$_SERVER[SERVER_NAME]/login.php?id=$user[id]&pass=" . htmlspecialchars($_POST['pass1']) . "' />";
echo "<div class = 'input-icon'>".img16('link.png')."</div>";
echo "</div></div>";
if ($set['reg_select'] == 'open_mail') {
unset($user);
}
echo "<div class = 'razd'>n";
if (isset($_SESSION['refer']) && $_SESSION['refer'] != NULL && otkuda($_SESSION['refer'])) {
echo img16('left.png') . " <a href='$_SESSION[refer]'>" . otkuda($_SESSION['refer']) . "</a><br />n";
}
echo img16('left.png') . " <a href='umenu.php'>Кабинет</a>";
echo "</div>";
require_once 'sys/inc/tfoot.php';
}
} elseif (isset($_POST['nick']) && $_POST['nick'] != NULL) {
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_POST['nick']) . "'"), 0) == 0) {
$nick = mysql_real_escape_string($_POST['nick']);
if (!preg_match("#^([A-zА-я0-9-_])+$#ui", $_POST['nick'])) {
$err[] = 'В логине присутствуют запрещенные символы';
}
if (preg_match("#[a-z]+#ui", $_POST['nick']) && preg_match("#[а-я]+#ui", $_POST['nick'])) {
$err[] = 'Разрешается использовать символы только русского или только английского алфавита';
}
if (preg_match("#(^ )|( $)#ui", $_POST['nick'])) {
$err[] = 'Запрещено использовать пробел в начале и конце логина';
}
if (text::utf8_strlen($nick) < 3) {
$err[] = 'Короткий логин';
}
if (text::utf8_strlen($nick) > 32) {
$err[] = 'Длина логина превышает 32 символа';
}
} else {
$err[] = 'Логин "' . stripcslashes(htmlspecialchars($_POST['nick'])) . '" уже зарегистрирован';
}
if (!isset($err)) {
$_SESSION['reg_nick'] = $nick;
$_SESSION['step'] = 1;
}
}
title();
aut();
err();
if (isset($_SESSION['step']) && $_SESSION['step'] == 1) {
echo "<div class = 'razd'>";
echo "Логин: <b>$_SESSION[reg_nick]</b>";
echo "</div>";
echo "<form method = 'post' class = 'razd' action = '/reg.php?$passgen'>";
echo "<b>Ваш пол</b><br />";
echo "<div class = 'inputs'>";
echo "<select name='sex'><option value='1'>Мужской</option><option value='0'>Женский</option></select><br />n";
echo "<div class = 'input-icon'>".img16('sex_man.png')."</div>";
echo "</div>";
if ($set['reg_select'] == 'open_mail') {
echo "<b>E-mail</b><br />";
echo "<input type = 'text' name = 'ank_mail' /><br />";
echo "* Указывайте ваш реальный адрес E-mail. На него придет код для активации аккаунта.<br />n";
}
echo "<b>Введите пароль (6-32 символов)</b><br />";
echo "<div class = 'inputs'>";
echo "<input aria-required = 'true' aria-invalid = 'false' required = 'required' type = 'password' name = 'pass1' maxlength = '32' /><br />";
echo "<div class = 'input-icon'>".img16('lock.png')."</div>";
echo "</div>";
echo "<b>Повторите пароль</b><br />";
echo "<div class = 'inputs'>";
echo "<input aria-required = 'true' aria-invalid = 'false' required = 'required' type = 'password' name = 'pass2' maxlength = '32' /><br />";
echo "<div class = 'input-icon'>".img16('lock.png')."</div>";
echo "</div>";
echo "<img src = '/captcha.php?$passgen&SESS=$sess' width = '100' height = '30' alt = 'Проверочное число' /><br />";
echo "<div class = 'inputs'>";
echo "<input aria-required = 'true' aria-invalid = 'false' required = 'required' name = 'chislo' maxlength = '5' value = '' type = 'text' /><br/>n";
echo "<div class = 'input-icon'>".img16('komm2.png')."</div>";
echo "</div>";
echo "<button class = 'button sign-in'>Далее</button>";
echo "<br />Регистрируясь, Вы автоматически соглашаетесь с <a href = '/info/rules.php'>правилами</a> сайта<br />n";
echo "</form>";
} else {
echo "<div class = 'razd'>Регистрация всего в 2 клика. У вас это займет менее 1й минуты</div>";
echo "<form method = 'post' class = 'razd' action = '/reg.php?$passgen'>";
echo "<div class = 'inputs'>";
echo "<input placeholder = 'Выберите логин' aria-required = 'true' title = 'Введите ваш будущий логин' aria-invalid = 'false' required = 'required' type='text' name='nick' maxlength='32' /><br />n";
echo "<div class = 'input-icon'>".img16('user_plus.png')."</div>";
echo "</div>";
echo "<button class = 'button sign-ins'>Далее</button>";
echo "<br/>";
echo "Регистрируясь, Вы автоматически соглашаетесь с <a href='/info/rules.php'>правилами</a> сайта<br />n";
echo "</form>";
}
echo "<div class = 'razd'><a href = '/aut.php' class = 'add'>".img16('left.png')." Авторизация</a></div>";
require_once 'sys/inc/tfoot.php';