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!
php form valitron validator namespace autoload
Commentami!