[PHP] Accedere indirettamente alle variabili $_GET

Rispondi
Roberto
Amministratore
Messaggi: 161
Iscritto il: 19/12/2009, 19:30

[PHP] Accedere indirettamente alle variabili $_GET

Messaggio da Roberto »

In PHP si raccomanda sempre di NON accedere in maniera diretta alle variabili passate tramite GET, ma di creare un metodo ad-hoc per la loro gestione. A titolo di esempio vi scrivo qui un metodo che solitamente utilizzo:

Codice: Seleziona tutto

public function get($nome = NULL, $valore = false) {
    
    $content = (!empty($_GET[$nome]) ? trim($_GET[$nome]) : (!empty($valore) && !is_array($valore) ? trim($valore) : FALSE));
    
    if (is_numeric($content))
        return preg_replace("@([^0-9])@Ui", "", $content);
    elseif (is_bool($content))
        return ($content?true:false);
    elseif (is_string($content)) {
        if (filter_var ($content, FILTER_VALIDATE_EMAIL))
            return $content;
        elseif (MIO CONTROLLO PERSONALIZZATO)
            return $content;
        else
            return preg_replace("@([^a-zA-Z0-9\+\-\_\*\@\$\!\;\.\?\#\:\=\%\/\ ]+)@Ui", "", $content);
    }
    else FALSE;
}
Come potete vedere il codice e' abbastanza semplice, in sostanza passiamo alla funzione il nome della variabile GET a cui vogliamo accedere e poi prima di restituire il valore effettuiamo una serie di controlli, per esempio se e' un numero verifichiamo che non vi siano caratteri diversi da numeri, se e' un booleano verifichiamo che esso abbia solo valori true e false oppure se e' una stringa possiamo definire noi delle verifiche in base a cosa ci aspettiamo di trovare... insomma un modo flessibile e intelligente di accedere alle variabili passate tramite GET ed evitare attacchi da malintenzionati.

Ovviamente adesso invece di accedere tramite

Codice: Seleziona tutto

$variabile = $_GET['nome'];
accediamo tramite

Codice: Seleziona tutto

$variabile = self::get('nome');
Rispondi