фильтрация $_GET

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

avgaz

Участник
Регистрация
18 Окт 2006
Сообщения
189
Реакции
7
Собственно вопрос как отфильтровать $_GET
Пишу один скриптик вернее модуль к CMS нужно отфильтровать $_GET где её значение берется из адресной строки
например index.php?xd=news&op=result_search_tag&ide=тестик
далее в самом файле
идет
$tags = $_GET['ide'];
и запрос в БД на поиск этого значения
Код:
$tags = $_GET['ide'];
        $query = $DB->query( "SELECT id, idcategoria, titolo, autore, data FROM news WHERE tags LIKE '%$tags%' AND validate = '1'");
вот как отфильтровать правильно что бы не допустить SQL-инъекцией ?

И ещё вопрос есть вывод и БД значений $tags
Например по запросу выводит так
тестовая, новость, тегов
как убрать запятые что из БД на экран вывелось без запятых?
 
Класс который ты юзаешь предусматривает функцию
Код:
$DB->safesql();
для текстовых значений делай так:
Код:
$tags = $DB->safesql($_GET['ide']);
для цифр достаточно так:
Код:
$tags = intval($_GET['ide']);
:)
 
1)для начала определить какие именно входные данные будет получать твоя переменная
посмотри об использовании функции mysql_escape_string
 
1)для начала определить какие именно входные данные будет получать твоя переменная
посмотри об использовании функции mysql_escape_string
Я просто знаю что за класс он юзает, там как safesql() и выполняет эту роль :)
 
Класс который ты юзаешь предусматривает функцию
Код:
$DB->safesql();
для текстовых значений делай так:
Код:
$tags = $DB->safesql($_GET['ide']);
для цифр достаточно так:
Код:
$tags = intval($_GET['ide']);
:)

Нет при $tags = $DB->safesql($_GET['ide']); выдает просто ошибку
Для цифр я знаю что достаточно intval
Значение переменой может быть любым хоть кирлица хоть цифры и тд
Это для поиска тегов
пока что вот так работает только
$tags = addslashes($_GET['ide']);
но если включен get_magic_quotes_gpc() то тоже ошибка будет
есть ещё какие ни будь способы?
 
Тогда советую добавить :)
Код:
function safesql( $source, $sql=true )
    {
        if ($sql) return mysql_real_escape_string ($source);
        else return mysql_escape_string($source);
    }
Юзать просто
$tags = safesql($_GET['ide'],true);
слеширование не нужно.
 
Тогда советую добавить :)
Код:
function safesql( $source, $sql=true )
    {
        if ($sql) return mysql_real_escape_string ($source);
        else return mysql_escape_string($source);
    }
Юзать просто
$tags = safesql($_GET['ide'],true);
слеширование не нужно.
Не такой вариант новой функции мне не подходит
Что скажите вот на такой вариант
Код:
if (get_magic_quotes_gpc() == 1) {
        $tags = $_GET['ide'];
            }
            else {
            $tags = addslashes($_GET['ide']);
        };

Вроде работает
 
This type of attack is possible with any character encoding where there is a valid multi-byte character that ends in 0x5c, because addslashes() can be tricked into creating a valid multi-byte character instead of escaping the single quote that follows.

Краткий перевод addslashes() в некоторых случаях можно обойти и скормить ей кавычку, mysql_real_escape_string() в тех же ситуациях обойти нельзя.
 
Для просмотра ссылки Войди или Зарегистрируйся, если ты такой умный сам всё знаешь, тогда чё ты у нас спрашиваешь? Я тебе дал готовый пример как делается фильтрация, но нет же, тебе такая не подходит, тогда делай как тебе подходит, а не посты тут набивай. Ппц я валяюсь горе кодеры.
 
Если бы был умным то не спрашивал.
Есть ещё одна проблемка

В модуле выводятся теги для новостей записанные в БД для каждой новости

вот запрос на вывод тегов
Код:
SELECT tags FROM news WHERE validate = '1' ORDER BY `id`
но Столкнулся с такой проблемой что слова склеиваются
например одна новость имеет такие теги "Тег1 тег2 тег3"
другая новость "Тег4 тег5 тег6"
и при выводе они склеиваются и выглядит так "Тег1 тег2 тег3Тег4 тег5 тег6" как этого избежать?
И следующий вопрос например теги записаны через запятую как при выводе убрать её?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху