Home / Programmazione / PHP / Validare form in PHP con Valitron
Mattepuffo

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!