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?