image_pdf

Formulaire et vérification de contenus

image_pdf

Vérification de la validité d'un email avec la fonction strpos()

Il existe toutes sortes de techniques pour vérifier la validité d'un email. La plus simple consiste à taper l'attribut required dans un champ de texte type email. On peut aussi utiliser le langage JavaScript, ce qui épargnera le serveur PHP. Enfin, la meilleure méthode consiste à expédier un message sur l'email tapé par l'internaute contenant un lien pour vérifier si l'email existe bien. C'est la méthode la plus sérieuse et la plus utilisée. L'exercice qui va suivre n'est donc pas le plus efficace pour vérifier la validité d'un email, mais il empêchera quelques fautes de frappe et il aura le mérite d'apprendre à manipuler les chaînes de caractères.

Dans cet exercice, nous allons vérifier si l'email comporte bien un "@" et un point.

Le code HTML du formulaire email.html

<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
	</head>
	<body>
		<form method="post" action="email.php">
			<label>Votre email : </label><input type="text" name="email">
			<input type="submit" value="OK">
		</form>
	</body>
</html>

Le code PHP de email.php

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
		<p>
		<?php
		$email = $_POST['email'];
		$point = strpos($email, ".");
		$aroba = strpos($email, "@");
		if (empty($_POST['email']))
			echo 'Veuillez saisir un email.';
		else if ($point === false)
			echo 'Votre email doit comporter un point.';
		else if ($aroba === false)
			echo 'Votre email doit comporter un arobase.';
		else
			echo 'Votre email est : ' . $email;
		?>
		</p>
    </body>
</html>

Affichera après un clic sur OK :

  • Si erreur :
    Veuillez saisir un email.
    Votre email doit comporter un point.
    Votre email doit comporter un arobase.
  • Si pas d'erreur :
    Votre email est : jules.bidon@monsite.com

La fonction empty() permet de contrôler la vacuité, c’est à dire :

  • "" : une chaîne vide ;
  • 0 : en tant qu’entier ;
  • '0' ou "0" : en tant que chaîne de caractères ;
  • NULL : une sorte d’anti-valeur ;
  • false ;
  • array() : un tableau vide ;
  • var $var; : une variable déclarée, mais sans valeur.

La fonction strpos() retourne la position d'un caractère dans une chaîne si celui-ci existe, sinon strpos() retourne false. C'est ce que nous utilisons pour savoir si les point et @ sont bien présents dans l'email. L'opérateur de comparaison === est plus précis que l'opérateur ==, car il sert non seulement à vérifier l'exactitude des données mais aussi le type de données. Contrairement à l'opérateur ==, l'opérateur === renvoie false si le point ou l'arobase se trouvent à la position 0, en début de chaine.

  • ==  égalité, exactitude des données. (0 et '0' sont équivalents)
  • ===  identique, exactitude des données et du type. (0 et '0' sont différents)

Si strpos() retourne 8, cela veut dire que le premier caractère recherché est placé juste après les 8 premiers caractères donc en 9ème position dans la chaîne, puisque le langage PHP commence à compter à 0 et non pas 1.

Vérification d'un email en une seule page

La condition if (!empty($_POST)) permet de vérifier si le formulaire a été soumis, on peut alors écrire le précédent code en une seule page et se débarrasser de la page email.html

Le code complet email.php :

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
		<form method="post">
            <label>Votre email : </label>
			<input type="text" name="email">
            <input type="submit" value="OK">
        </form>
		<p>
		<?php
		if (!empty($_POST)) {
			$point = strpos($_POST['email'], ".");
			$aroba = strpos($_POST['email'], "@");
			if ($point === false)
				echo 'Votre email doit comporter un point.';
			else if ($aroba === false)
				echo 'Votre email doit comporter un arobase.';
			else
				echo 'Votre email est : ' . $_POST['email'];
		} else {
			echo 'Veuillez saisir un email.';
		}
		?>
		</p>
    </body>
</html>

Articles connexes

Alimenter une table MySQL via un formulaire HTML Voici le formulaire HTML permettant d'ajouter un enregistrement dans notre table carnet. ajouter.html &l...
Tableau associatif $_GET Le tableau $_GET permet de transmettre des valeurs de variables vers une autre page en passant par la barre d'adresse du navigateur. Intérêt de la méthode GET L'in...
Structuration d'un site avec include() La fonction include() permet d'inclure une portion de code située dans un fichier externe à l'intérieur d'une page. Cette instruction permet d'éviter de réécrire les parties ...
Création d'une table avec phpMyAdmin Pour comprendre ce qu'est une base de données, le plus simple est de créer la base que tout le monde utilise au quotidien : le carnet d'adresses. Création de la base de données es...
Gestion des images avec PHP Le langage PHP intègre un ensemble de fonctions relatives aux images. Il est ainsi possible de créer ses propres images dans une page, mais aussi d'obtenir des informations sur de...