всем привет. пожалуйста помогите, как составить скрипт, меньше строков, быстро работающий и эффективный. как можно фильтровать. на пр: url cat=mycat&act=some&id=22, только использоват эти переменные, а если будут другие тогда сообщение "Dont try to hack me". заранее спасибо.
проконтролируй какие индексы в $_GET. если только нужные - все нормально. если есть ненужные - а нафига это нада? выключи register_globals и пиши все явно указывая глобальный массив откуда ожидаешь данные и строго указывай тип данных.
посчитать количество переменных в GET, сравнить имена переменных с заранее определёнными, подучить русский язык
PHP: <?php $allows = array('cat','act','id'); $ok = true; if(count($_GET)!=count($allows)) $ok = false; foreach($_GET as $index) { if(!in_array($index, $allows)) $ok = false; } if(!$ok) die('Dont try to hack me'); ?> причем блок кода можно в функцию вытащить поместив ее в общий функционал, а в нужном месте ее вызывать PHP: <?php /** ЭТО В ОБЩАГУ **/ function checkGET( $allows ) { if(count($_GET) != count($allows)) return false; foreach($_GET as $index) { if(!in_array($index, $allows)) return false; } return true; } /** А ТАК ДЕЛАТЬ ЕЕ ВЫЗОВ В НУЖНОМ МЕСТЕ **/ if(!checkGET(array('cat','act','id'))) { // тут твое сообщение "антихак" } ?> дальше додумывай сам а в php.ini отредактировать.
Ganzal всё же PHP: <?php foreach($_GET as $index => $val) { if(!in_array($index, $allows)) return false; } ?> а то получается, что сравниваешь предполагаемые ключи со значениями из $_GET
Luge точно, температура сказывается... хоть бы нацедил стаканчик для дизинфекции, а то вон зажал целую цистерну ))))