Есть такая страничка регистрации,нужно что бы все отправлялось по форме в базу,по моей глупости и незнамке, при вводе поля ФИО, которое должно быть вида :Иванов И.И. он выдает ошибку о том, что можно использовать буквы только русского алфавита(оно и понятно), но, даже если не использовать точки и пробелы, все аналогично. Был бы признателен за подсказку, подозреваю, что все дело в 20 строке:
if(!preg_match("/^[а-яА-Я]/",$_POST['fullname']))
<?php
$link=mysqli_connect("localhost", "root", "", "usersdb");
if(isset($_POST['submit']))
{
$err = [];
// проверям логин и фио
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
{
$err[] = "Логин может состоять только из букв английского алфавита и цифр";
}
if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
}
if(!preg_match("/^[а-яА-Я]/",$_POST['fullname']))
{
$err[] = "Ф.И.О может состоять только из букв Русского алфавита";
}
if(strlen($_POST['fullname']) < 3 or strlen($_POST['fullname']) > 50)
{
$err[] = "Ф.И.О. должно быть не меньше 3-х символов и не больше 50";
}
// проверяем, не сущестует ли пользователя с таким именем
$query = mysqli_query($link, "SELECT user_id FROM users WHERE user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
if(mysqli_num_rows($query) > 0)
{
$err[] = "Пользователь с таким логином уже существует в базе данных";
}
$query = mysqli_query($link, "SELECT user_id FROM users WHERE user_fullname='".mysqli_real_escape_string($link, $_POST['fullname'])."'");
if(mysqli_num_rows($query) > 0)
{
$err[] = "Пользователь с таким Ф.И.О уже существует в базе данных";
}
// Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{
$fullname = $_POST['fullname'];
$login = $_POST['login'];
// Убераем лишние пробелы и делаем двойное хеширование
$password = md5(md5(trim($_POST['password'])));
mysqli_query($link,"INSERT INTO users SET user_login='".$login."', user_password='".$password."', user_fullname='".$fullname."'");
header("Location: index.php"); exit();
}
else
{
print "<b>При регистрации произошли следующие ошибки:</b><br>";
foreach($err AS $error)
{
print $error."<br>";
}
}
}
?>
Cкорее всего у вас кодировка utf-8, поэтому нужно использовать модификатор u
Для ФИО в формате Иванов И.И.
будет что-то вроде:
$pattern = '/^[а-я]+\s+[a-я]\.?[а-я]\.?$/ui';
Или, жёстче, с требованием корректного регистра и точек:
$pattern = '/^[А-Я][а-я]*\s+[А-Я]\.[А-Я]\.$/u';
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
нужна помощь знатока prestashopВозможно есть где то информация или кто то может помочь, в том как можно вывести в письме (в котором выводиться...