<?php /* Check all the input. We are only using _REQUEST which may or may not be a good idea. Unsetting GET and POST. */ $checkit = new checkit(); $short = $GLOBALS["config_vars"]["input_filter"]["keys"][$GLOBALS["config_vars"]["thisrequest"]]; unset($_GET); unset($_POST); foreach ($_REQUEST as $k=>$v) { if (is_array($v)) { foreach($v as $k1=>$v1) { if(is_array($v1)) { foreach($v1 as $k2=>$v2) { if(is_array($v2)) { $logger->setLog("Array too deep under $k>$k1>$k2",__LINE__,__FILE__); } else { // do something $logger->setLog("IGNORE: $k>$k1>$k2",__LINE__,__FILE__); } } } else { if (isset($short[$k]['keys'][$k1])) { $checkit->setConfig($short[$k]['keys'][$k1]); $checkit->doCheck($v1); $response = $checkit->getResponse(); if($response == UNSET_REPLACE) { $newval = $checkit->getNewValue(); $_REQUEST[$k][$k1] = $newval; $logger->setLog("REPLACE $v1 with $newval",__LINE__,__FILE__); } else { handle_response($response); } $logger->setLog("Acting on key:(".$short[$k]['keys'][$k1]['type'].") ($response) $k1",__LINE__,__FILE__); } else { unset($_REQUEST[$k]); $logger->setLog("Unsetting [$k][$k1]",__LINE__,__FILE__); } } } } else { if (isset($short[$k])) { $checkit->setConfig($short[$k]); $checkit->doCheck($v); $response = $checkit->getResponse(); if($response == UNSET_REPLACE) { $newval = $checkit->getNewValue(); $_REQUEST[$k][$k1] = $newval; $logger->setLog("REPLACE $v1 with $newval",__LINE__,__FILE__); } else { handle_response($response); } $logger->setLog("Acting on key:(".$short[$k]['type'].") ($response) $k",__LINE__,__FILE__); } else { unset($_REQUEST[$k]); $logger->setLog("Unsetting $k",__LINE__,__FILE__); } } } function handle_response($response) { if ($response == UNSET_CONTINUE) { /* Take no action. */ } if ($response == UNSET_REQUEST) { unset($_REQUEST); } if ($response == UNSET_KEY) { unset($_REQUEST[$k]); } if ($response == UNSET_ACTION) { unset($_REQUEST["action"]); } if ($response == UNSET_REPLACE) { unset($_REQUEST["action"]); } } ?>