Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Поиск по сайту


Автор: chem1 15.1.2004, 11:36
Организовываю поиск по сайту (PHP+SQL). Делаю выборку так
SELECT * FROM table WHERE name LIKE '$search'
где $search - искомое выражение из формы поиска.
Проблема в следующем, при таком подходе, если в базе забито "Какое небо голубое", а я ищу по слову "небо" - ничего не найдено, "небо голубое" - ничего не найдено, "какое небо голубое" - выдает искомую строку. Хотелось бы чтобы в первых 2х случаях он её находил так-же.

Автор: MuToGeN 15.1.2004, 11:38
SELECT * FROM table WHERE name LIKE '%$search%'

Автор: IZ@TOP 15.1.2004, 14:13
Да, прикольно это ... пишешь себе в форме поиска что то на подобии
'; drop table table; и радуешся жизни smile.gif

Автор: Бекетов Роман aka Yaiu 15.1.2004, 14:55
так проверяй на входе че тебе дают

вот тут Дмитрий Котеров специально статью написал про это
http://dklab.ru/chicken/nablas/30.html

Автор: IZ@TOP 15.1.2004, 16:07
Бекетов Роман aka Yaiu, Это надо знать всем.

Автор: Unregistered 15.1.2004, 16:42
Цитата
drop table table

И откуда узнаешь, что надо писать table?

Автор: IZ@TOP 15.1.2004, 16:47
Можно попытаться.

Автор: MuToGeN 15.1.2004, 16:49
'; show tables; (может, прокатит, может, нет - зависит от твоего скрипта)

Автор: Гость_IZ@TOP 15.1.2004, 16:59
MuToGeN, это да...

Автор: MuToGeN 15.1.2004, 17:50
И вообще это дело "SQL injections" зовется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)