Validare form in PHP con Valitron

Validare form in PHP con Valitron

Ho trovato una buona libreria per la validazione dei form in PHP: Valitron.

Non solo ha parecchi metodi di validazione (basta aprire un file delle lingue per vederli), ma gli errori sono già tradotti in diverse lingue.

Prima di tutto scaricate la libreria; il tutto è composto dal file Validator.php, che contiene la classe Validator, e da una directory con i file della lingua.

A questo punto dovremmo avere una struttura del genere:

-index.php
-Valitron
--Validator.php
--lang

Bene, vediamo una pagina di esempio con un form (index.php):

<?php

function __autoload($class) {
    $file = str_replace('\', DIRECTORY_SEPARATOR, $class) . '.php';
    include_once $file;
}

use ValitronValidator as Validator;

Validator::langDir('lang');
Validator::lang('it');
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="post" action="#">
            <?php
            if (isset($_POST['btn'])) {
                $validator = new Validator($_POST);
                $validator->rule('required', ['email', 'password']);
                $validator->rule('email', 'email');
                $validator->rule('url', 'url');
                $validator->rule('length', 'password', 5);
                if ($validator->validate()) {
                    echo $validator->data();
                } else {
                    foreach ($validator->errors() as $e) {
                        echo $e[0] . '<br>';
                    }
                }
            }
            ?>
            <br>
            <input type="text" name="email" value="<?php echo $_POST['email']; ?>" autofocus><br>
            <input type="text" name="url" value="<?php echo $_POST['url']; ?>"><br>
            <input type="password" name="password"><br>
            <button type="submit" name="btn">Send</button>
        </form>
    </body>
</html>

In testata di file carichiamo la libreria con la funzione __autoload.

Poi richiamiamo il namespace e settiamo la directory della lingua (conviene sempre farlo).

Poi controlliamo il form al momento dell'invio, impostando:

  • email e password come required
  • controlla che l'email sia in formato corretto
  • controlla che l'url sia in formato corretto
  • controllando che la password sia lunga almeno 5 caratteri

Poi controlliamo che non ci siano errori con la funzione validate, e stampiano i valori o gli errori.

Molto easy!

Enjoy!