Изменить фильтрацию массива в бд MySQL.

Статус
В этой теме нельзя размещать новые ответы.

metallphilin

старожил nulled
Регистрация
25 Авг 2006
Сообщения
680
Реакции
212
суть в чем.. при регитсрации, скрипт фильтрует все символы, не принадлежащие массиву 0-9A-Za-z. Поэтому регистрация русскими символами не проходит.

Я так понимаю, что бы пропустить регитсрацию русскими символами нужно разширить правило проверки на русские символы тоже.

вот что указано в MySQL:

Код:
return ( preg_match( '/^[a-zA-Z0-9_-]+$/', $arg0 ) and !file_exists( $dir['root'] . $arg0 ) );

казалось бы все просто, добавить в массив наши, буквы:

Код:
return ( preg_match( '/^[a-zA-ZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0-9_-]+$/', $arg0 ) and !file_exists( $dir['root'] . $arg0 ) );

но скрипт по прежнему отказывается пропускать русские символы. Есть идеи как пофиксить?
 
попробовать пошаманить с кодировками, возможно, что они различаются, отсюда и проблемы
 
А мне кажется в другом месте еще режутся.

Попробуй выводить на экран прямо изнутри условия if().
Например, заведи функцию tst
PHP:
function tst($str) {
  echo $str . "<br>";
  return 1;
}

и в код включи return (tst($arg0) && preg_match(....

так ты точно узнаешь, что за кодировка и действительно ли в ней дело.
 
для utf-8:
PHP:
return ( preg_match('/^[a-zA-Zа-яА-ЯЁё0-9_\-]+$/iu', $arg0) and !file_exists( $dir['root'] . $arg0 ) );
 
казалось бы все просто, добавить в массив наши, буквы:

Код:
return ( preg_match( '/^[a-zA-ZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0-9_-]+$/', $arg0 ) and !file_exists( $dir['root'] . $arg0 ) );

А в какой кодировке сам .php файл с приведенным кодом? В той же, что и таблица MySQL?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху