Validez simplement vos formulaires en PHP

Logo PHP

Si vous avez déjà utilisé le framework CodeIgniter, vous avez certainement remarqué qu’il dispose d’un système de validation de formulaire très efficace et très simple à mettre en œuvre. Je voulais réutiliser ce système sur d’autres projets mais la classe est très dépendante du framework. J’ai donc écrit une classe qui reprend les mêmes fonctionnalités et qui est complétement indépendante. Comme je suis sympa je partage ça avec vous !

Prérequis

Après vous être assuré que votre version de PHP est supérieure ou égale à 5, récupérez le projet sur GitHub. Vous pouvez le consulter ou télécharger toute l’archive. Le dossier « demo » de l’archive contient des exemples d’utilisation avec tous les types de validation possible, n’hésitez pas à vous en inspirer ! Une fois la classe téléchargée, vous n’avez qu’à l’inclure sur chaque page qui contient un formulaire à valider :

include('form-validation.php');

Paramètres

Les paramètres permettent de définir le type de validation souhaité pour chaque champ. Ils sont définis sous forme d’un tableau associatif, la clé correspond au nom du champ (attribut « name » du champ HTML) et la valeur correspond à la liste des paramètres (type de validation, champ obligatoire, …). Certains paramètres sont obligatoires, d’autres sont optionnels. Je vais vous expliquer tout ça, vous me suivez ?

Les paramètres obligatoires

Pour tous les types de vérification :

  • Le nom du champ : C’est la clé du tableau associatif.
  • Type (string) : Le type de contrôle à effectuer, à choisir parmi « string », « int », « float », « email », « url », « ipv4 », « ipv6 », « bool », « equals » et « equals_field ».
  • Label (string) : Le libellé du champ (affiché dans les erreurs).
  • Required (bool) : Définit si le champ est obligatoire.

Pour le type de vérification « equals » :

  • Value (string) : Spécifie le texte avec lequel sera comparée la valeur saisie dans le champ.

Pour le type de vérification « equals_field » :

  • Field (string) : Définit le nom du champ avec lequel la valeur saisie sera comparée.

Les paramètres optionnels

Pour tous les types de vérification :

  • Trim (bool, à vrai par défaut) : Suppression des espaces inutiles au début et à la fin de la chaîne de caractère (à oui par défaut).
  • Sanitize (bool, à vrai par défaut) : Suppression des caractères non autorisés (à oui par défaut).

Pour les types de vérification « string », « int » et « float » :

  • Min (int / float) : Si le type de vérification est « string », ce paramètre spécifie la longueur minimale du texte qui doit être saisi dans le champ. Pour les types « int » et « float », c’est la valeur minimale (après conversion) que ce paramètre définit.
  • Max (int / float) : Le fonctionnement est identique à « min » mais pour la longueur (string) et la valeur (int / float) maximale.

Pour les types de vérification « equals » et « equals_field » :

  • Case_sensitive (bool, à vrai par défaut) : Définit si la comparaison doit être faite en tenant compte des différences de casse (majuscules / minuscules).

Déclaration des paramètres

Voici la manière dont vous devez déclarer vos paramètres :

// Liste des champs du formulaire
$form = array(
    'nom' => array('type' => 'string', 'label' => 'nom', 'required' => true),
    'prenom' => array('type' => 'string', 'label' => 'prénom', 'required' => true)
);

$validation = new FormValidation(); // Création de l'objet
$validation->setFields($form); // Déclaration des champs

Validation

Ensuite, vous devez fournir à la classe les valeurs qui ont été postées :

$validation->setSource($_POST);

La prochaine étape est la validation du formulaire et l’affichage du résultat :

if ($validation->isValid()) {
    echo 'Le formulaire est valide.';
} else {
    echo '<p>Vous avez fait des erreurs :</p><ul><li>'.implode('</li><li>', $validation->getErrors()).'</li></ul>';
}

S’il y a des erreurs, vous pouvez afficher les valeurs postées dans les champs correspondants, ça permettra au visiteur de ne pas avoir à ressaisir toutes les valeurs :

<p>
    <label for="nom">Nom</label>
    <input type="text" name="nom" id="nom" value="<?=$validation->getFormValue('nom')?>" />
</p>

<p>
    <label for="prenom">Prénom</label>
    <input type="text" name="prenom" id="prenom" value="<?=$validation->getFormValue('prenom')?>"  />
</p>

Si le formulaire est valide, vous pouvez effacer les valeurs pour ne pas qu’elles soient affichées dans les champs. Cela permet d’éviter que le visiteur ne vous spam en renvoyant plusieurs fois le formulaire avec les mêmes valeurs :

$validation->resetFormValues();

C’est simple, non ?

Configuration

Si les messages d’erreur ne vous conviennent pas, vous pouvez les modifier. Ils se trouvent dans le tableau associatif « $messages », en haut du fichier « form-validation.php ». Si vous apportez d’autres modifications à la classe n’hésitez pas à m’en faire part, dans les commentaires, avec le formulaire de contact ou en faisant un pull request sur GitHub. Ça servira peut-être à certains d’entre nous !

Commentaires

Il n'y a pas encore de commentaire mais vous pouvez en laisser un grâce au formulaire ci-dessous !


Vous avez aimé cet article ? Dites-le !