Una buona pratica, secondo me, sarebbe quella di:
1) utilizzare un array di parametri "aspettati" indicando anche la loro lunghezza massima ed il loro tipo;
2) passare questo array ad una funzione di "filtraggio" degli input alla quale si indica anche la provenienza
3) questa funzione, che prende due array in input(GET/POST/etc e l'array dei parametri aspettati) filtra le corrispondenze in base alle informazioni che gli passiamo.
In genere si lavora con classi o comunque con delle funzioni, quindi i parametri che ci aspettiamo e che useremo sono in numero limitato, è ragionevole quindi una situazione di questo tipo:
Codice PHP:
function parse_input($source, $expected) {
$result = array();
foreach ( $expected AS $parameter => $type ) {
if ( isset($source[$parameter]) ) {
switch ( $type ) {
case 'bool':
$result[$parameter] = settype($source[$parameter], 'boolean'); break;
case 'integer':
$result[$parameter] = settype($source[$parameter], 'integer'); break;
case 'float':
case 'double':
$result[$parameter] = settype($source[$parameter], 'float'); break;
case 'string':
$result[$parameter] = mysql_real_escape_string($source[$parameter]); break;
default:
$result[$parameter] = htmlentities($source[$parameter]); break;
}
}
}
return $result;
}
da utilizzare in questo modo:
Codice PHP:
function myFunction() {
$expected = array
(
'id' => 'integer',
'nome' => 'string',
'testo' => 'string'
);
$get = parse_input($_GET, $expected);
// il resto del codice
}
ovviamente la funzione "parse_input()" va resa più robusta e la si può comunque personalizzare per tipi nuovi (es. 'mysql', 'date', etc).
che ne dite?