Php, ошибка при использовании preg_match

144
25 ноября 2017, 11:10
  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 {}

То всё работает. Но, конечно же, мне желательна проверка.

Помогите решить проблему, пожалуйста

Answer 1

Обратите внимание на сигнатуру 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']))
{
    // Добавить в базу
}
READ ALSO
Как тестировать апи с Laravel oauth

Как тестировать апи с Laravel oauth

Написал API на Laravel, аутентификация через laravel/passportКак в тесте имитировать залогиненого пользователя? Не очень хочется вручную создавать в базе...

165
Интеграция через SAOP

Интеграция через SAOP

Такая задача у нас: периодически (например раз в 10 мин) они должны попадать на сайтТ

149
Почему не работает обработчик?

Почему не работает обработчик?

Веду логин и пароль делаю авторизацию и мне выдает неверный логин или пароль хотя указанно все правильноКак мне кажется проблема в том что...

181
Имитация нажатия мышки CURL + PHP + JS

Имитация нажатия мышки CURL + PHP + JS

Ребята помогите разобраться с проблемой: Суть в чем написал парсер, знаю как вызвать имитацию кнопки через JS теперь не могу это все собрать...

182