Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/01/2010, 15:37
quarkmarino
 
Fecha de Ingreso: septiembre-2009
Mensajes: 15
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: filter_input callback con multiples argumentos, ¿se puede?

Lo que me indicabas es, como pasar varios parámetros en la función de callback, lo cual esta bien, es lo que pregunte al principio, pero ahora no se como utilizar el valor que este procesando la función filter_input_array en cada momento, digamos:

La idea realmente es utilizar un filter_input_array donde esta toma cada elemento del array de entrada $_GET y automáticamente lo filtra de acuerdo a lo que se indique en la variable $filters, la cual podría extenderse para que revisara cada entrada GET de acuerdo a su clave,

de:
Código PHP:
$filters = array("action" => array("filter" => FILTER_CALLBACK, array("options" => call_user_func_array('compare', array('opcionAComparar', array('op1','op2','op3','op4'))))); 
a
Código PHP:
$filters = array(
    
"action" => array("filter" => FILTER_CALLBACK, array("options" => call_user_func_array('compare', array('opcionAComparar', array('op1','op2','op3','op4')))));
    
"username" => array("filter" => FILTER_CALLBACK, array("options" => 'verifyUsername')),
    
"email" => FILTER_VALIDATE_EMAIL,
    
"password" => array("filter" => FILTER_CALLBACK, array("options" => 'verifyPassword')),
    
"contry" => array("filter" => FILTER_CALLBACK, array("options" => 'verifyCountry')),
        ); 
esto es:
"filtrar la variable $_GET['action'] de acuerdo a la función 'compare' ",
"filtrar la variable $_GET['username'] de acuerdo a la función 'verifyUsername'"
"filtrar la variable $_GET['email'] de acuerdo al filtro pre construido FILTER_VALIDATE_EMAIL",...etc


Código PHP:
// ... etc
    
function compare($action$actions){
        foreach(
$actions as $posible)
            if(
$action == $posible)
                return 
$posible;
        return 
'idle';
    }

    function 
verifyUsername($user){
    
//...
    
}


    
$result filter_input_array(INPUT_GET,  $filters);
// ... etc 
Sin embargo por ejemplo cuando se filtre la variable $_GET['username'] su valor es pasado automáticamente a la función verifyUsername, lo cual no sucede con la variable $_GET['action'] por lo que probablemente tendría que escribirlo de la siguiente manera:

Código PHP:
"action" => array("filter" => FILTER_CALLBACK, array("options" => call_user_func_array('compare', array($_GET['action'], array('op1','op2','op3','op4'))))); 
substituyendo la cadena 'opcionAcomparar' por la variable $_GET['action'], es decir lo tendría que especificar manualmente, para aquellas funciones de múltiples parámetros a diferencia de aquellas como la que filtra a $_GET['username'] donde solo indico el nombre de la función que quiero utilizar y el parametro se pasa automáticamente.

La duda:

¿Como hago para pasar automáticamente el valor que se esta filtrando a una función de callback junto con otros parámetros, tal como un array?

espero haber sido mas claro ahora, lo que pasa es que soy algo novato en esto de los post Gracias.