Вход Регистрация
Файл: app/user/sign-up.php
Строк: 36
<?php

if ($user->isAuth()) {
    
redirect('/');
    exit;
}

$form = [
    
'value' => [
        
'nick' => isset($_POST['nick']) ? trim($_POST['nick']) : null,
        
'email' => isset($_POST['email']) ? mb_strtolower(trim($_POST['email'])) : null,
        
'captcha' => isset($_POST['captcha']) ? mb_strtolower(trim($_POST['captcha'])) : null,
        
'password' => isset($_POST['password']) ? trim($_POST['password']) : null,
    ],
    
'error' => [],
];

if (isset(
$_POST['submit'])) {
    
$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']['nick'] = 'Необходимо ввести логин';
    } elseif (!
preg_match('#^[a-z0-9-_]{3,25}$#ui'$form['value']['nick'])) {
        
$form['error']['nick'] = 'В логине разрешены только буквы (A-Za-z) и цифры (0-9), не меньше 3 и не больше 20 символов';
    } elseif (!empty(
$result->nick)) {
        
$form['error']['nick'] = 'Такой логин уже занят';
    }

    if (empty(
$form['value']['email'])) {
        
$form['error']['email'] = 'Необходимо ввести E-Mail';
    } elseif (!
filter_var($form['value']['email'], FILTER_VALIDATE_EMAIL)) {
        
$form['error']['email'] = 'Введите корректный E-Mail';
    } elseif (!empty(
$result->email)) {
        
$form['error']['email'] = 'Пользователь с таким E-Mail уже зарегистрирован';
    }

    if (empty(
$form['value']['password'])) {
        
$form['error']['password'] = 'Необходимо ввести пароль';
    } elseif (
mb_strlen($form['value']['password']) < 8) {
        
$form['error']['password'] = 'Длина пароля не может быть меньше 8 символов';
    }

    if (empty(
$form['value']['captcha'])) {
        
$form['error']['captcha'] = 'Необходимо ввести код с картинки';
    } elseif (
$form['value']['captcha'] !== @$_SESSION['captcha']) {
        
$form['error']['captcha'] = 'Неверно введен код с картинки';
    }

    unset(
$_SESSION['captcha']);

    if (
count($form['error']) == 0) {
        
$password password_hash($form['value']['password'], PASSWORD_DEFAULT);

        
$created_at date('Y-m-d H:i:s'time());

        
$stmt $db->prepare("INSERT INTO users SET password = :password, email = :email, nick = :nick");
        
$stmt->bindParam(':password'$passwordPDO::PARAM_STR);
        
$stmt->bindParam(':email'$form['value']['email'], PDO::PARAM_STR);
        
$stmt->bindParam(':nick'$form['value']['nick'], PDO::PARAM_STR);
        
$stmt->execute();

        
redirect('/sign-in');
        exit;
    }
}

echo 
$template->render('user.sign-up', [
    
'form' => $form,
]);
Онлайн: 0
Реклама