In questo articolo vediamo come pulire e sanitizing l'input dell'utente per evitare di salvare errori nel database in Wordpress.
E’ buona pratica sempre controllare e pulire l’input che l’utente inserisce per far si che non si inseriscano caratteri indesiderati nel database e per tenere il nostro programma pulito e senza errori e warning. Questo processo viene chiamato sanitizing.
Sanitizing vuol dire sostanzialmente pulire l’input ed eliminare caratteri e codice non consentito prima di memorizzare le variabli.
WordPress mette a disposinzione un’ampia libreria di funzioni per sanitize l’input, in questo articolo ne vedremo solo le piu’ importanti in quanto le funzioni sono davvero tantissime.
- sanitize_email ( string $email ), pulisce una email da tutti i caratteri che non sono consentiti. Solitamente viene usata prima di memorizzare email nel database.
echo sanitize_email("narayan prusty@sitepoint.com"); // restituisce "narayanprusty@sitepoint.com" $sanitized_email = sanitize_email(' admin@example.com! '); echo $sanitized_email; // restituisce 'admin@example.com'
- sanitize_file_name ( string $filename ), pulisce i nomi di file sostituendo spazi e dashes. Questa funzione viene usata da WordPress Media Uploader per pulire i nomi dei file nella media gallery.
echo sanitize_file_name("_profile pic--1_.png"); // restituisce "profile-pic-1_.png"
- sanitize_text_field ( string $str ), questa funzione e’ probabilmente la funzione piu’ comune usata per pulire i dati da FORM, pulisce una string, puo’ essere usata con dati di utente o da database.
echo sanitize_text_field("<b>Bold<</b>"); //visualizza "Bold<"
- sanitize_title ( string $title, string $fallback_title = ”, string $context = ‘save’ ), questa funzione viene usata per evitare di visualizzare caratteri non desiderati nei titoli degli articoli o custom post type. Rimuove codice PHP e tags HTML da una string, cosi’ come accenti. Gli spazi vengono convertiti in dashes.
echo sanitize_title("Sanítizing, Escaping and Validating Data in WordPress"); //visualizza "sanitizing-escaping-and-validating-data-in-wordpress" $new_url = sanitize_title('This Long Title is what My Post or Page might be'); echo $new_url; // visualizza "this-long-title-is-what-my-post-or-page-might-be"
- sanitize_textarea_field ( string $str ), questa funzione funziona esattamente come sanitize_text_field, ma viene usato per pulire i tag textarea nei form.
- sanitize_key ( string $key ), options, MetaData e Transients Keys possono solo avere caratteri minuscoli e alfanumerici, dashes e underscores. Questa funzione elimina tutti gli altri carattarei.
Per una completa visione di tutte le funzioni che WordPress mette a disposizione per pulire l’input date un occhiata al questo articolo preso dalla documentazione di WordPress qui. Nel caso abbiate necessita’ dovete fare un data-validation sull’input vi consiglio di usare le funzioni PHP quali is_email(), is_serialized(), empty() ecc… Date un occhiata a questo interessante articolo.
In sostanza, sempre controllare cosa l’utente sta inserendo nel database, mai fidarsi del senso comune degli utenti, e questo vi aiutera’ a far crescere un sistema piu’ robusto prevenendo errori del database.