Я пытаюсь выполнить некоторое предварительное совпадение, чтобы сделать мой скрипт более безопасным, но что бы я ни вводил в имя пользователя/реальное имя, я получаю ошибку ... где я здесь не так?preg match для регистрационного скрипта php
$unpreg = $_POST["username"];
$empreg = $_POST["email"];
$rnpreg = $_POST["realname"];
$error = false;
if(preg_match("/[^\p{L}\p{N}_\-\.]+/iu','",$unpreg) || (filter_var($empreg, FILTER_SANITIZE_EMAIL)) || (preg_match("/[^\p{L}\s]+/u",$rnpreg))) {
$error = true;
}
if(!$error) {
$sql = "INSERT INTO Users (UserName, Email, Password,Real_Name) VALUES (:username, :email, :password, :realname)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':username',$unpreg);
$stmt->bindParam(':realname',$rnpreg);
$stmt->bindParam(':email', $empreg);
$stmt->bindParam(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));
$stmt->execute();
$message = 'Successfully created new user';
}
else {
$message = 'Error, Something went wrong.';
}
В основном для unpreg я хочу, чтобы позволить-ö 0-9 -_ и rnpreg а-орто - и пространство
EDIT: если я удалить (filter_var($empreg, FILTER_SANITIZE_EMAIL))
это работает ... как я implemend что, не нарушая его?
Почему одинарные кавычки и запятая в ''/[^ \ p {L} \ p {N} _ \ - \.] +/Iu ',' "'? Используйте только ''/[^ \ p {L} \ p {N} _.-] +/iu "' –
@ WiktorStribiżew okey, танки, но у меня все еще такая же проблема, я боюсь –
'filter_var' в вашем случае не возвращает логическое, просто очищенное письмо. Вы, должно быть, хотели «FILTER_VALIDATE_EMAIL» –