@andry200000

Как остановить регистрацию?

Всем привет! Господа эксперты подскажите пожалуйста, в чем моя ошибка, не получается закрыть регистрацию если в логине использовались спец. символы, регистрацию проходит, хоть и говорит что ошибка, но аккаунт регистрируется, как правильно это реализовать?!
(Если использовались спец. символы. Выдаем ошибку и останавливаем далее выполнение, у меня все равно регистрирует)
Дайте совету пожалуйста)
<?php
session_start();
include ('');

$errMsg = '';

if (isset($_POST['signup']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    $isUsernameValid = filter_var(
        $username,
        FILTER_VALIDATE_REGEXP, [
            "options" => [
                "regexp" => "/^[a-z\d_]{3,20}$/i"
            ]
        ]
    );
    $today = date("Y-m-d H:i:s");
    $special = preg_match('~[^a-z\d_[\]().-]+~i', $username);
    $password_hash = password_hash($password, PASSWORD_BCRYPT);
    $query = $dbh->prepare("SELECT * FROM admin WHERE username=:username");
    $query->bindParam("username", $username, PDO::PARAM_STR);
    $query->execute();
    if ($query->rowCount() > 0)
    {
        $errMsg = 'занят';
    }
    if ($query->rowCount() == 0)
    {
        $query = $dbh->prepare("INSERT INTO users(date_signup,username,password) VALUES (:date_signup,:username,:password_hash)");
        $query->bindParam("date_signup", $today, PDO::PARAM_STR);     
        $query->bindParam("username", $username, PDO::PARAM_STR);
        $query->bindParam("password_hash", $password_hash, PDO::PARAM_STR);
        $result = $query->execute();
        if ($isUsernameValid) {
            $errMsg = 'Запрещено';
        }
         elseif(!$result) {
            $errMsg = 'Успешно зарегались';
        } elseif($isUsernameValid = $special) {
            $errMsg = 'какой то еррор';
        } 
    }
    }
?>
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Очевидно - проверять корректность логина до записи в базу, а не после.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 08:27
7000 руб./за проект
28 апр. 2024, в 08:18
15000 руб./за проект
28 апр. 2024, в 02:30
3000 руб./за проект