Файл: wenr.online/app/user/save.php
Строк: 24
<?php
if (!$user->isAuth() or !empty($user->get()->email)) {
redirect('/');
exit;
}
$form = [
'value' => [
'nick' => isset($_POST['nick']) ? trim($_POST['nick']) : null,
'email' => isset($_POST['email']) ? mb_strtolower(trim($_POST['email'])) : null,
'password' => isset($_POST['password']) ? trim($_POST['password']) : null,
],
'error' => [],
];
if (isset($_POST['nick'])) {
$stmt = $db->prepare("SELECT * FROM
(SELECT COUNT(user_id) AS nick FROM users WHERE nick = :nick) AS nick_check,
(SELECT COUNT(user_id) AS email FROM users WHERE email = :email) AS email_check
");
$stmt->bindParam(':nick', $form['value']['nick'], PDO::PARAM_STR);
$stmt->bindParam(':email', $form['value']['email'], PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);
if (empty($form['value']['nick'])) {
$form['error']['text'] = 'Необходимо ввести ник';
} elseif (!preg_match('#^[a-z0-9-_]{3,25}$#ui', $form['value']['nick'])) {
$form['error']['text'] = 'В нике разрешены только буквы (A-Za-z) и цифры (0-9), не меньше 3 и не больше 20 символов';
} elseif (!empty($result->nick)) {
$form['error']['text'] = 'Такой ник уже занят';
}
if (empty($form['value']['email'])) {
$form['error']['text'] = 'Необходимо ввести E-Mail';
} elseif (!filter_var($form['value']['email'], FILTER_VALIDATE_EMAIL)) {
$form['error']['text'] = 'Введите корректный E-Mail';
} elseif (!empty($result->email)) {
$form['error']['text'] = 'Пользователь с таким E-Mail уже зарегистрирован';
}
if (empty($form['value']['password'])) {
$form['error']['text'] = 'Необходимо ввести пароль';
} elseif (mb_strlen($form['value']['password']) < 6) {
$form['error']['text'] = 'Длина пароля не может быть меньше 6 символов';
}
if (count($form['error']) == 0) {
$password = password_hash($form['value']['password'], PASSWORD_DEFAULT);
$save = $db->prepare('update `users` set `password` = ?, `nick` = ?, `email` = ? where `user_id` = ?');
$save -> execute([$password,$form['value']['nick'],$form['value']['email'],$user->get()->user_id]);
redirect('/game');
exit;
}
else {
Notif :: error($form['error']['text'],'/save');
exit;
}
}
echo $template->render('user.save');