BigThink

PHP: validare un form con le eccezioni

Validare un formE’ da tempo che programmo in PHP e ho avuto modo di apprezzare la programmazione OO, rispetto all’approccio procedurale, in particolare grazie al maggior supporto agli oggetti di PHP5.

Vedremo in questo articolo come validare i campi di un form, utilizzando la gestione delle eccezioni, disponibili solo dalla versione 5, appunto.

Darò per scontato che già sappiate programmare ad oggetti con PHP. Quindi, procediamo.

In PHP — così come in molti altri linguaggi — le eccezioni si gestiscono con questo blocco di codice:

try{
    // Provo ad eseguire delle istruzioni
}catch(Exception $e){
    // Eseguo delle istruzioni alternative
}
// Riprende l'esecuzione normale

Vediamo allora come sfruttare questa cosa.

Poniamo di avere una pagina HTML con un form di registrazione utente con i campi user, password ed email.

Creiamo la nostra classe User: avrà i suoi costruttori, vari metodi, un metodo di inserimento ed uno di validazione.

class User{
    // ...
    function insert($dati){
        $this->validate($dati);
        // inserimento nel database
    }

    function validate($dati){
        if($dati['user'] == "")
            throw new Exception("il campo 'user' e' obbligatorio");
        if($dati['password'] == "")
            throw new Exception("il campo 'password' e' obbligatorio");
        if(!$this->checkMail($dati['email']))
            throw new Exception("è stata inserita una email non valida");
    }
     // ...
}

Come possiamo vedere, il metodo insert fa prima una chiamata al metodo validate e poi esegue le varie operazioni di inserimento nel database.

Il metodo validate, invece, verifica la correttezza dei dati inseriti e, nel caso in cui non soddisfi i criteri, lancia una eccezione che risalirà fino al chiamante di insert e dovrà quindi essere gestita. Da notare che è possibile passare una stringa esplicativa dell’errore.

Dall’altra parte, nella pagina con il form, ecco cosa accade:

if($_POST){
    try{
        $user->insert($_POST);
        echo 'Inserimento completato';
    }catch(Exception $e){
        echo 'Errore: ' . $e->getMessage();
    }
}
// codice per il form

Se è stato fatto il POST del form, chiamiamo la insert all’interno della try-catch: nel caso vada tutto ok mostriamo il messaggio di conferma (oppure possiamo fare il redirect ad un’altra pagina), altrimenti mostriamo l’errore.

Come potrete immaginare, il metodo getMessage restituirà il messaggio di errore che abbiamo impostato precedentemente nel metodo di validazione.

Mi sembra un modo molto pulito e facilmente mantenibile per validare i campi di un form, sfruttando al meglio le caratteristiche di PHP5.

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

Test Driven Development: prima i test, poi il codice

Test Driven Development: prima i test, poi il codice

Un metodo non tradizionale e agile per lo sviluppo e il design del software è il Test Driven Development (TDD): sviluppo guidato dai test. E' un'alternativa al solito metodo a cascata (waterfall), secondo il quale, dopo un'adeguata analisi e progettazione, si inizia a scrivere il codice e solo alla fine si passa al ...
Array delle nazioni del mondo e delle province italiane

Array delle nazioni del mondo e delle province italiane

Creando una qualsiasi applicazione web (ma anche desktop), può capitare molto spesso di aver bisogno di una lista delle nazioni del mondo, piuttosto che quella delle province italiane. Paradossalmente, risorse del genere sembrano quasi introvabili sul web o comunque richiedono lunghe ricerche. Qualcosa si trova, ma spesso non è nel formato che serve a ...
Una cache per il numero di iscritti a Facebook e Twitter

Una cache per il numero di iscritti a Facebook e Twitter

Visualizzare il numero di followers su twitter e di fan su facebook è molto oneroso in termini di tempo per il nostro blog. I server sempre sovraccarichi di questi social network minano i tempi di caricamento in modo notevole. Chiunque abbia provato a recuperare in formato testuale questi valori, in particolare quelli relativi a ...
PHP: manipolare immagini con tre righe di codice

PHP: manipolare immagini con tre righe di codice

Oggi vi presento una classe PHP per manipolare in tutta facilità le immagini: si tratta di SmartImage del buon Alessandro Coscia di CodiceFacile. Con poche righe di codice potremo ridimensionare, croppare, convertire, ottimizzare, ruotare le immagini ed aggiungervi un watermark. Il tutto compatibile sia con PHP 4 che 5. Per prima cosa, scarichiamo SmartImage, ...
Creare un database di testo in PHP

Creare un database di testo in PHP

Spesso potremmo aver necessità di utilizzare un database. Tuttavia, se si tratta di un piccolo script che non useremo spesso, invece di andare a creare tabelle su MySQL, possiamo utilizzare un semplice file di testo e andare a scrivere e leggere delle stringhe. E' chiaro che le limitazioni sono molte: deve trattarsi di una mole ...

3 Commenti

  1. Ottimo post.

    20 marzo 2010, 20:16

2 Citazioni