Verifica di una stringa o di un nome proveniente da form

MarcoGrazia

Utente Attivo
15 Dic 2009
808
16
18
59
Udine
www.stilisticamente.com
Ciao, come spesso capita, bisogna verificare ed eventualmente validare quanto proviene da form, dato che non conosciamo la nostra utenza e il non farlo, potrebbe complicare l'esistenza stessa e l'integrità del nostro lavoro online.
Quindi qual'è il modo migliore per farlo? Automatizzare ovviamente; usiamo i computer mica per niente.

Quello che segue è una funzione che permette di verificare e validate una qualsiasi stringa di caratteri, sia un nome di persona, che una frase o una password ( infondo è una stringa ).

Prima di tutto le funzioni che useremo per callback ( si immagina uno script in PHP che utilizza i filtri per il controllo )
PHP:
/**
    *    Effettua il trimming dei dati passati alla funezione
    */
    function trimValue( &$value )
    {
        if ( !is_array( $value )) $value = trim( $value );
    }    //    trimValue()

/**
    *    Verifica una stringa per il tipo di caratteri passati
    *    Controlla che sia formata solo da lettere, maiuscole e minuscole, e numeri, tutti gli altri caratteri
    *    saranno riportati come encode
    */
    function verificaStringa( $valore )
    {
        $options = array ( 'flags' => array('FILTER_FLAG_ENCODE_LOW', 'FILTER_FLAG_ENCODE_HIGH'));
    return filter_var( $valore, FILTER_SANITIZE_STRING, $options ); 
    }    //    verificaStringa()

    /**
    *    Verifica un nome per il tipo di caratteri passati
    *    Come sopra, ma le iniziali delle parole saranno rese in maiuscolo.
    */
    function verificaNome( $valore )
    {
        $options = array ( 'flags' => array( 'FILTER_FLAG_ENCODE_LOW', 'FILTER_FLAG_ENCODE_HIGH' ));
        $valore = filter_var( $valore, FILTER_SANITIZE_STRING, $options );
        //  Verifica se sono installate le funzioni Multibyte, se no usa quelle normali.
        if ( function_exists( 'mb_convert_case' ) )
            return mb_convert_case($valore, MB_CASE_TITLE, 'UTF-8');
        else
            return ucwords( $valore );
    }    //    verificaNome()
Le funzioni di callback, dato che possono essere usate anche da altre pagine php, conviene sempre metterle in un file a parte.
Io uso un dile chiamato fantasiosamente genericFunction.inc.php :D

Si usano così:
PHP:
array_walk_recursive( $_POST, 'trimValue' );  //  Pulisce la POST da spazi bianchi non voluti, tabulazioni orizontali e/o verticali, prima della validazione.

//  Controllo se è stato premuto il tasto di invio, se sì, entro in validazione.
if ( filter_has_var( INPUT_POST, 'invio' ) && filter_has_var( INPUT_POST, 'invio' ) == 'salvami' )
{
    //  Se esiste la chiave invio in POST e se il suo valore è salvami, vuol dire che è stato premuto il tasto di invio sul form e sono arrivato qui.
    $options = [
       'nome' => ['filter' => FILTER_CALLBACK, 'options' => 'verificaNome'],
       'cognome' => ['filter' => FILTER_CALLBACK, 'options' => 'verificaNome'],
       'password' => ['filter' => FILTER_CALLBACK, 'options' => 'verificaStringa']
    ];
    $input = filter_input_array( INPUT_POST, $opt );
}

In pratica, per prima cosa effettuo il trimming di tutto ciò che sta nell'array POST, poi verifico se è stato premuto il tasto di invio sul form e se sì, entro in validazione.
Manco a dirlo, i nomi del campi dei vari elementi di input del form, beh, ognuno ci mette quelli che vuole, l'importante è riportarli nello script.
Quindi ogni campo richiama la sua funzione di CALLBACK e questa ritornerà o un valore vuoto, oppure una stringa con i caratteri passati se ritenuti validi.
Nel caso della verificaNome, i valori saranno ritornati in maiuscoletto, cioè con le iniziali in maiuscolo. E' solo un valore aggiunto.
Verifica anche se sono installate le funzioni Multi Byte, in quel caso usa quelle, più precise, soprattutto con lingue esoteriche, se non ci sono, usa la ucwords().
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Verifica se una Funzione appartiene ad una Classe PHP 9
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Search Console 0
P Verifica form solo con php senza javascript PHP 15
D Verifica inserimento dati form PHP 12
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
V verifica form jQuery 5
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
Virginia86 [risolto] Problema select e verifica form PHP 38
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1
F Esiste un programma che verifica la home page e la corregge automaticamente? HTML e CSS 7
P problema verifica dati Ajax 58
P Verifica form misto php e JS Javascript 2
A verifica disponibilità dominio Domini 0

Discussioni simili