Здравствуйте, у меня два вопроса Сделал поиск по ключевому слову в таблице у себя на сайте, запрос ввожу как SELECT fname WHERE ftext LIKE '%$word%'; Вопрос первый: достаточно ли сделать str_replace('"','',$word); str_replace("'','',$word); (то есть убрать все одинарные и двойные кавычки чтобы закрыть уязвимости к инжектам? Вопрос второй: когда юзаю вышеописанный поиск по латинским словам - все ровно. А когда вписываю, например, "Ы", то он находит совершенно рандомные файлы в которых этой буквы естественно нет. Что делать? Менять кодировку? На сайте у меня все файлы сохранены в ANSI, в хедерах прописываю charset win-1251. Придется все в УТФ перегонять? Кодировка в мускуле настроена следующим образом: PHP: mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) Когда через putty делаю выборку - та же херня получается. Т.К. русский текст выдается в виде щЙЯРПЕЛЮКЭМШЕ_яХРСЮЖХХ_б
на счёт путти, тут дело в самом путти, в настройках кодировку ковырять нужно. а по поводу фильтрации - это велосипед, а не фильтрация. mysql_real_escape_string есть для этого.
mysql_real_escape_string, совсем забыл про нее но или я тупой, или оно не хочет работать делаю так $word=mysql_real_escape_string($word); возвращает всегда пустоту =(
PHP: <?php $wordstr="abcdef"; $wordstr=substr($wordstr,0,100); $wordstr=str_replace("'",'',$wordstr); $wordstr=str_replace('"','',$wordstr); $wordstr=str_replace(' ',' ',$wordstr); $wordstr=mysql_real_escape_string($wordstr); echo($wordstr); ?> возвращает пустоту. а если закоментить строку - то норм