Всем привет! Господа эксперты подскажите пожалуйста, в чем моя ошибка, не получается закрыть регистрацию если в логине использовались спец. символы, регистрацию проходит, хоть и говорит что ошибка, но аккаунт регистрируется, как правильно это реализовать?!
(Если использовались спец. символы. Выдаем ошибку и останавливаем далее выполнение, у меня все равно регистрирует)
Дайте совету пожалуйста)
<?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 = 'какой то еррор';
}
}
}
?>