Проблема с выводом!

maximing

Новичок
Проблема с выводом!

Здравствуйте!

PHP:
mysql_query("select * from vos_users where nick like '".$_GET['b']."%'")
Данный запрос должен получить все поля из таблицы, где поле nick начинается на определенную букву!
При запуске данного когда на сервере выводится чушь(например, ввожу букву А, а мне выводятся данные на А и другие буквы)!

Вот пример работы:

http://www.vos.too.kz/index.php?mod=users&b=А

Помогите разобраться в чем дело!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
echo $sql и просмотр сурса в браузере даст Вам ответ
 

Фанат

oncle terrible
Команда форума
а мне кажется - дело в языковой настройке базы.
похоже на случай из фака
 

maximing

Новичок
Beavis я понимаю, но от иньекций фильтр есть.

К сожалению, так и не разобрался в чем дело. Написал админиам хостинга.

Кстати, заметил, что дома все работает, по крайней мере на Денвере.
 

phprus

Moderator
Команда форума
maximing
К сожалению, так и не разобрался в чем дело. Написал админиам хостинга.
Совет фaнaтa выполнил? http://phpclub.ru/faq/wakka.php?wakka=Mysql41Rus&v=fid читал?

я понимаю, но от иньекций фильтр есть.
Данные нужно не фильтровать, а экранировать в них спецсимволы. Читай: PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
 

maximing

Новичок
Фaнaт

Фильтр примитивный, сильно не ругайте! :)

PHP:
function injection($str)
 {
  $bad = array("'", "select", "drop", ";", "--", "insert", "delete", "xp_", "union", "like", "|",
               "!", "?", "%", "$", "&", "#", "@", "*", "^", "<", ">");
  for ($i = 0; $i < 22; $i++)
      {
       $str = str_replace($bad[$i], "", $str);
      }
  return $str;
 }
 

dimagolov

Новичок
maximing, фильтр гениальный. То есть подразумевается что использовать слава select, drop, и т.д. в текствовых значениях твоей базы запрещено, это нечто матов в форуме, так?
 

maximing

Новичок
Автор оригинала: dimagolov
maximing, фильтр гениальный. То есть подразумевается что использовать слава select, drop, и т.д. в текствовых значениях твоей базы запрещено, это нечто матов в форуме, так?
PHP:
$_GET['b'] = injection($_GET['b']);
index.php?mod=users&b=А

Автор оригинала: dimagolov
это нечто матов в форуме, так?
Нет!
 

SiMM

Новичок
> maximing, nick='unionist' все таки нельзя ведь использовать?
Зато Unionist - можно.
Тем не менее - фильтр предлагает типичные костыли вместо соблюдения синтаксиса SQL-запросов. А при небольшой сноровке абсолютно бесполезен.
 

Фанат

oncle terrible
Команда форума
maximing
но теперь ты понял, что этот фильтр бессмысленный, и знаешь, как делать правильно?
 

maximing

Новичок
SiMM
Тем не менее - фильтр предлагает типичные костыли вместо соблюдения синтаксиса SQL-запросов. А при небольшой сноровке абсолютно бесполезен.
Спасибо за разьяснение.

Фaнат
но теперь ты понял, что этот фильтр бессмысленный, и знаешь, как делать правильно?
Я думаю воспользуюсь данным советом и все исправлю. Спасибо.

Данные нужно не фильтровать, а экранировать в них спецсимволы. Читай: PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
 
Сверху