if (preg_match ("/^[a-zа-я0-9_]{3,15}$/", $_POST['reg_name'], $_POST['reg_pass'])) {
/*последующий код, где имя и захешированный пароль заносятся в бд*/
}
Проблема в том, что пароль не записывается в бд. Но если писать вот так:
if (strlen($_POST['reg_name']) >= 3 and strlen($_POST['reg_pass']) >= 3 {}
То всё работает. Но, конечно же, мне желательна проверка.
Помогите решить проблему, пожалуйста
Обратите внимание на сигнатуру preg_match:
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
$subject — это string, а $_POST['reg_pass'] у вас передаётся как массив для сохранения найденного соответствия.
Нужно поправить регулярное выражение, добавить ё и модификаторы iu для работы со строками Юникода (u) и регистронезависимого поиска (i), а затем использовать конструкцию типа if (preg_match(...) && preg_match(...)) {...}:
$regex = "/^[a-zа-яё0-9_]{3,15}$/iu";
if (preg_match($regex, $_POST['reg_name']) && preg_match($regex, $_POST['reg_pass']))
{
// Добавить в базу
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости