Détails des méthodes
Actuellement, la classe contient 5 vérifications, qui renvoient un booléen (true/false):
Champ vide
La fonction isEmpty renvoie true si la chaîne passée est vide, c'est à dire si elle ne contient que des caractères "blancs" (espace, tabulation, retour à la ligne).
<?php function isEmpty($string) { $string = preg_replace("!\s!m", "", $string); if (trim($string)=='') return true; else return false; } ?>
Champs égaux
La fonction isEqual vérifie que deux chaînes sont identiques.
<?php function isEqual($string1, $string2) { if ($string1==$string2) return true; else return false; } ?>
Champ Email
La fonction isEmail vérifie qu'un champ donné a la syntaxe d'une adresse email.
<?php function isEmail($email) { $pattern = '/^[a-z0-9\._\-\+]+@[a-z0-9\.-]{2,}\.[a-z]{2,4}$/i'; if (preg_match($pattern, $email) == 1) return true; else return false; } ?>
Champ normalisé
La fonction isNormalized permet de vérifier qu'une chaîne ne contient que des lettres, des chiffres, des tirets et des underline.
<?php function isNormalized($string) { $pattern = '![^a-z0-9\-_]!i'; return !preg_match($pattern, $string); } ?>
Longueur minimum d'un champ
La fonction isMini permet de vérifier qu'une chaîne fait au moins une taille minimum (3 caractères par défaut).
<?php function isMini($string, $length=3) { if (strlen($string) < $length) return false; return true; } ?>
Elle ne fait aucun contrôle sur les caractères eux-mêmes, ce qui signifie qu'une chaîne ne contenant que des tabulations ou des retours à la ligne en nombre suffisant renvoie true. Cette fonction est donc souvent associée à isEmpty().
Utilisation
Il suffit d'inclure la classe et de faire des appels des fonctions.
Prenons le cas d'un formulaire d'inscription qui demande:
- un login devant faire au moins 4 caractères
- un mot de passe (entré deux fois) devant faire au moins 6 caractères
- une adresse mail
$this->app->_pst correspond en fait au tableau $_POST
<?php define('INVALID_EMAIL', 'L\'email doit être valide'); define('MISMATCH_PASSWORD', 'Les mots de passe ne correspondent pas'); define('MINIMAL_LOGIN', 'Le pseudonyme doit faire au moins 4 caractères'); define('MINIMAL_PASSWORD', 'Le mot de passe doit faire au moins 6 caractères'); define('BADCHARS_LOGIN', 'Le pseudonyme ne peut contenir que des lettres non-accentuées, des chiffres, le signe "-" et le signe "_"'); if (Assert::isEmpty($this->app->_pst('login')) || !Assert::isMini($this->app->_pst('login'), '4')) { this->app->log(2, MINIMAL_LOGIN); } if (!Assert::isEmail($this->app->_pst('email'))) { $this->app->log(2, INVALID_EMAIL); } if (Assert::isEmpty($this->app->_pst('passwd')) || !Assert::isMini($this->app->_pst('passwd'), '6')) { $this->app->log(2, MINIMAL_PASSWORD); } if (!Assert::isEqual($this->app->_pst('passwd'), $this->app->_pst('passwd_2'))) { $this->app->log(2, MISMATCH_PASSWORD); } ?>
Sources
Cette petite classe est disponible ici, n'hésitez pas à la compléter et me transmettre vos modifications.