Dovresti utilizzare le funzioni di filtro PHP, parte 2
Nel post precedente, ho parlato dei motivi per cui l’utilizzo delle funzioni di filtraggio PHP è più utile piuttosto che no.
In breve, ciò aiuta a fornire un livello di convalida integrato nel linguaggio in modo da non dover riscrivere qualcosa. Naturalmente, ci sono delle avvertenze.
Ad esempio, se devi convalidare un valore che è di caratteri non latini, dovrai farlo da solo e implementare la convalida con forse un’espressione regolare.
Ma se stai utilizzando indirizzi e-mail, URL, numeri, indirizzi IP e molte altre cose, allora sei in una buona posizione per utilizzare qualcosa che già esiste.
Ad ogni modo, tutto quanto sopra riguarda ancora il filtraggio delle variabili. E per quanto riguarda gli input, però? Cioè, quelli che provengono da $_POST
o $_GET
. È possibile utilizzare una strategia simile con una funzione diversa e un diverso set di filtri.
Ma se capisci le basi presentate nell’ultimo post, questo post non sarà molto diverso.
Funzioni di filtraggio PHP, parte 2: Input
Il filtraggio degli input viene eseguito dalla filter_input
funzione. La definizione di questa specifica funzione è:
Ottiene una specifica variabile esterna in base al nome e, facoltativamente, la filtra
E, come detto l’ultima volta, suona un po’ strano finché non capisci quali sono i filtri. Fortunatamente, ne abbiamo parlato nel post precedente. E anche se questo post si concentrerà specificamente su POST
(e molto brevemente GET
).
Ci sono altri filtri però. E questi includono:
INPUT_COOKIE
INPUT_SERVER
INPUT_ENV
Ad ogni modo, poiché le due operazioni più comuni che tendo a vedere in WordPress includono POST
e GET
, sembra importante includerle qui.
Usare queste funzioni è banalmente facile. Si supponga di avere un valore proveniente da qualcosa che l’utente ha fornito in un modulo e che lo stia inviando al server utilizzando una POST
richiesta con una chiave come firstname
.
Il codice per verificarlo potrebbe essere simile a questo:
filter_input(INPUT_POST, 'firstname');
Il che è abbastanza facile da capire perché prende semplicemente la chiave, la filtra e quindi restituisce un valore. E poiché restituisce un valore, possiamo impostare una clausola di guardia prima di andare avanti con qualsiasi altro lavoro:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
Se tutto è andato a buon fine, possiamo andare avanti facendo tutto ciò che dobbiamo fare con le informazioni dell’utente. Forse abbiamo bisogno di associarlo al post corrente per qualsiasi motivo:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
4
5$firstname = filter_input(INPUT_POST, 'firstname');
6update_post_meta(get_the_ID(), 'acme-firstname', $firstname);
7
8// Other code you may use...
Inoltre, puoi proteggere le informazioni ancora di più attraverso l’uso dei vari filtri esistenti. Questi vengono passati come terzo parametro alla filter_input
funzione.
E che dire GET
?
La cosa bella di questa funzione è che, in generale, valgono le stesse regole che fanno con POST
tranne che con INPUT_POST
, userai INPUT_GET
.
E poi puoi elaborare il tuo codice come meglio si adatta alle esigenze del tuo progetto.
Sicurezza, Nonces, ecc.
Ricorda, questo non è qualcosa da usare al posto della sicurezza. Questo è puramente allo scopo di proteggere i dati prima di fare qualsiasi cosa con essi.
Non sostituire la verifica dei valori nonce solo perché stai verificando i dati in modo diverso.
Variabili e Input
Ricorda, sebbene queste funzioni siano variabili molto simili e gli input siano diversi. In altre parole, non tentare di utilizzare filter_var
quando si lavora con l’input proveniente dall’utente o dal browser. Usalo ogni volta che lavori con le variabili. E, allo stesso modo, usa ht e