Re[9]: отбор записей по отмеченному checkbox в PHP + MySQL
От: Mamut Швеция http://dmitriid.com
Дата: 30.07.08 13:57
Оценка:
M>>http://getfirebug.com/

Z>Спасибо попробую. А то я столько программ перепробовала с якобы возможностью дебугить. А дебуг еще и не всегда запускается на них. А на некоторых вообще не запускается. PHPEd, например, иногда запускает. А phpDesigner нет. Правда, может я чего-то не так делаю


Firebug позволяет дебагить Javascript на клиенте, а не РНР. Но инструент мега полезные

M>>Ну, это не методом научного тыка. Генерируется же там Правда, тут надо будет код дописать, чтобы в $sFilter не попадал последний OR


Z>А вот с этого места можно поподробнее? Ну не программер я


У нас идет склейка нескольких значений в цикле в стиле
фильтр = фильтр + новое значение + OR


Естетсвенно, что в конце получится, что фильтр выглядит как-то так:
val1 OR val2 OR val3 OR


Потому можно сделать так:
$sFilter=''; // if-else нам не нужно. достаточно просто if'а

if (isset($_GET['idobj'])) // можно добавить && is_array($_GET['idobj']), если паранойя
{
    foreach($_REQUEST['idobj'] as $objid)
    {
        if(is_numeric($objid))
            $sFilter .= "zag_objects.idobj = $idobj OR ";
    }
}

$sFilter .= ' zag_objects.idobj = 0';


Таким образом фильтр будет выглядеть в стиле:
zag_objects.idobj = 1 OR
zag_objects.idobj = 2 OR
zag_objects.idobj = 3 OR
zag_objects.idobj = 0


так как обычно ID не равно нулю то нестрашно

M>>>>на клиенте ничего не надо собирать — это прямой путь к SQL Injection

Z>>>У меня защита стоит.

M>>Какая?


Z>Простая. Запрет на ввод любых символов кроме smallinteger в фильтр. Везде идет проверка is_numeric


Ну, в исходном сообщении просто этого не была, а фильтра напрямую формировался на клиенте


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.