Formulaire et vérification de contenus

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