04-07-2008 : 2h03 min - non connecté
Dernière modification le 21 août 2007

 

Tester la validité des éléments d'un formulaire

 

Avant d'insérer les champs d'un formulaire dans une base de données il peut être utile de vérifier que les données sont conformes à ce qu'on attend. Voici quelques exemples de contrôle que l'on peut faire :

Vérifier que le champ est rempli

Voici la vérification la plus simple : pour tester si un champ a bien été saisi on utilise la fonction empty.

Par exemple, si on demande le nom d'une personne dans un formulaire et que celui-ci est stocké dans la variable $nom, le code ci-dessous permet de tester que le champ a bien été rempli :

Vérifier qu'un champ est numérique

Pour tester si un champ est numérique, on utilise la fonction is_numeric :

Dans le même genre vous pouvez utiliser les fonctions : is_bool , is_float , is_int , is_string , is_object et is_array.

La fonction ereg

La fonction ereg permet de rechercher une chaîne de caractère dans une autre chaîne.

Utilisation de ereg :

Par exemple :

ereg("@",$mail) recherche le symbole @ dans une variable contenant une adresse e-mail.

eregi est similaire à ereg, sauf que cette fonction n'est pas sensible à la casse.

Exercice :

Créer un formulaire de saisi d'e-mail, puis une page qui teste que l'adresse contient bien le symbole @.

Les expressions régulières

Compliquons un peu. Les expressions régulières sont un système qui permet de manipuler des chaînes de textes. On peut faire une recherche à partir d'un modèle de chaîne à l'intérieur d'une autre chaîne. Les expressions régulières s'utilisent entre autre avec les fonctions ereg et eregi.

En application, nous verrons comment tester la validité d'une adresse mail.

Voici la syntaxe des expressions régulières :

"^a" représente une chaîne qui commence par a (ex : arbre, avion, aa, ...)

Si on veut tester qu'une chaîne commence par "a", on pourra le faire ainsi :

Le même exemple pourrait être appliqué aux cas suivants :

"a$" représente une chaîne qui fini par "a" (ex : lalala, tata, ...)

"ab*" représente une chaîne qui commence par a, suivi de 0 ou plusieurs b (ex : a, ab, abb, ...)

"ab+" représente une chaîne qui commence par a, suivi de 1 ou plusieurs b (ex : ab, abb, ... mais pas a)

"abc?" représente une chaîne qui commence par ab, suivi de 0 ou 1 c (ex : ab ou abc)

"o(ups)*" représente une chaîne qui commence par o, suivi de 0 ou plusieurs chaîne ups (ex: o, oups, oupsups, ...)

"abc{4}" représente une chaîne commençant par ab et 4 fois la lettre c

"a(bc){2,4}" représente une chaîne commençant par a et suivi de la chaîne bc répétée entre 2 et 4 fois (ex : abcbc, abcbcbc, abcbcbcbc)

Le point (.) représente n'importe quel caractère.

"a|b" représente la caractère a ou b

Les crochets indiquent le type de caractères autorisés à un endroit donné du modèle :

[a-f] : un caractère entre a et f.

[0-9] : un chifre entre 0 et 9.

[A-Z] : une lettre majuscule entre A et Z.

Un exemple :

Une utilisation classique des expressions régulières est de tester la validité d'une adresse mail.

Une adresse email est un texte séparé par le symbole @. A gauche on peut avoir un point, un - et un _. A droite on peut avoir un point ou un tiret, mais pas de _. L'adresse ne peut pas commencer par un point et il ne peut pas y avoir deux points de suite.

Essayons de paramétrer ces conditions :

La partie gauche doit commencer par un caractère autre que le point : ^[_a-z0-9-]

Il peut y avoir plusieurs caractères : ^[_a-z0-9-]+

Puis un point (l'anti-slash est nécessaire car le point a une signification dans les expressions régulières): ^[_a-z0-9-]+\.

Ensuite on affiche à nouveau 1 ou plusieurs caractères : ^[_a-z0-9-]+\.[_a-z0-9-]+

Mais le point n'est pas obligatoire, donc on place des parenthèses, le contenu de ces parenthèses est répété entre 0 et n fois : ^[_a-z0-9-]+(\.[_a-z0-9-]+)*

On impose la présence de @ : ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@

Puis la partie droite de l'adresse, idem à la partie gauche (avec _ en moins) :^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$

Utilisation dans un script :

La fonction eregi ne tient pas compte de la casse. Elle va vérifier si l'adresse email est valide. Si ce n'est pas le cas, un message d'erreur sera affiché.

Page suivante : Chargement de fichiers par méthode POST