Запрос выводит данные, несмотря на несуществующий ID

Рейтинг: 0Ответов: 1Опубликовано: 13.02.2015

Страница example.com/item/5/ выводит данные из БД на основе текущего id, в данном случае ID=5.

Запрос к БД выглядит примерно так:

SELECT * FROM items WHERE item_id = '".$_GET['item_id']."

Проблема заключается в том, что если в адрес страницы, в данном случае, к 5 добавить какие-либо буквы, то страница всё равно вызвается по id = 5.

Например, example.com/item/5xyz/ или example.com/item/5fldsf/ выводят страницу по ID 5.

Прошу помочь. :(

Ответы

▲ 1Принят

Есть такая вещь, как "преобразование типов данных".

И поскольку Вы передаете не числовое значение, а строку (обращаем внимание на скобки ' '), то она подлежит преобразованию. Как итог, все не числовые значения справа отбрасываются, и вы получаете обычное число '5xyz' => 5.

Для учебы такие запросы пойдут, но в реальном приложении, если Вы не проверяете полученные значения и сразу пихаете их в запрос, то это очень большая дыра в безопасности. Посмотрите хотя бы на PDO в будущем и проверяйте значения.