Файл: install/step/3.php
Строк: 71
<?php
$config = parse_ini_file (ROOT . 'system/ini/db.ini');
$db = new PDO ('mysql:host=' . $config['dbhost'] .';dbname=' . $config['dbname'], $config['dbuser'], $config['dbpass'], [
PDO::ATTR_PERSISTENT => true
]);
$db->query("SET NAMES utf8");
$listing[] = [
'title' => 'Регистрация администратора',
'div' => 'razdel',
];
if (filter_has_var(INPUT_POST, 'submit'))
{
$filter = [
'login' => filter_has_var(INPUT_POST, 'login')
? filter_input(INPUT_POST, 'login', FILTER_UNSAFE_RAW)
: null,
'sex' => filter_has_var(INPUT_POST, 'sex')
? filter_input(INPUT_POST, 'sex', FILTER_SANITIZE_NUMBER_INT)
: null,
'pass1' => filter_has_var(INPUT_POST, 'pass1')
? filter_input(INPUT_POST, 'pass1', FILTER_UNSAFE_RAW)
: null,
'pass2' => filter_has_var(INPUT_POST, 'pass2')
? filter_input(INPUT_POST, 'pass2', FILTER_UNSAFE_RAW)
: null
];
foreach (glob(ROOT . 'app/*') AS $name)
{
if (strripos(str_replace([ROOT . 'app/', '.php'], '', $name), $filter['login']) !== false)
{
$error = true;
}
}
if (isset($error))
{
$error = 'Запрещенный логин.';
}
elseif (Filter::strlen($filter['login']) < 2 || Filter::strlen($filter['login']) > 32)
{
$error = 'Неверный формат логина.';
}
elseif (preg_match('/[^A-Za-z0-9-]/', $filter['login']))
{
$error = 'Логин должен иметь только латинские буквы и цифры.';
}
elseif (mb_strlen($filter['pass1']) < 6)
{
$error = 'Короткий пароль. Минимум 6 символов.';
}
elseif ($filter['pass1'] != $filter['pass2'])
{
$error = 'Пароли не совпадают.';
}
else
{
$token = md5(mt_rand(10000, 99999));
$stmt = $db->prepare('INSERT INTO `users` (`login`, `password`, `token`, `time_reg`, `time_last`, `sex`, `level`) VALUES (:login, :password, :token, :time_reg, :time_last, :sex, :level)');
$stmt->execute([
':login' => $filter['login'],
':password' => Filter::encode($filter['pass1']),
':token' => $token,
':time_reg' => time(),
':time_last' => time(),
':sex' => $filter['sex'],
':level' => 4,
]);
setcookie('token', $token, time() + 60 * 60 * 24 * 31 * 365, '/');
setcookie('id', $db->lastInsertId(), time() + 60 * 60 * 24 * 31 * 365, '/');
$_SESSION['step'] = 0;
Core::go('/');
}
}
Core::show('error');
$elements[] = [
'type' => 'input',
'title' => 'Логин',
'br' => 1,
'info' => [
'name' => 'login',
]
];
$elements[]= [
'type' => 'select',
'title' => 'Пол',
'br' => 1,
'info' => [
'name' => 'sex',
'options' => [
[
1,
'Мужской',
],
[
0,
'Женский',
]
]
]
];
$elements[] = [
'type' => 'password',
'title' => 'Пароль',
'br' => 1,
'info' => [
'name' => 'pass1',
]
];
$elements[] = [
'type' => 'password',
'title' => 'Повторите пароль',
'br' => 1,
'info' => [
'name' => 'pass2',
]
];
$elements[] = [
'type' => 'submit',
'info' => [
'name' => 'submit',
'value' => 'Завершить'
]
];
$smarty->assign([
'method' => 'POST',
'action' => '?',
'el' => $elements,
'listing' => $listing
]);
$smarty->display('listing.tpl');
$smarty->display('form.tpl');