<?php
// script inscritionverif.php
ini_set ("display_errors", TRUE); error_reporting (E_ALL) ; // afficher les messages d'erreur

// récupérer les paramètres (vides lors du 1er appel du formulaire)
$nom = @$_GET["nom"];
$age = @$_GET["age"];
$courriel = @$_GET["courriel"];
?>

<html>
<head>
<title>8eme exercice php - formulaire et validation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?php

function formulaire ($nom, $age, $courriel) { // afficher le formulaire
echo <<<FORMULAIRE
<form name="saisie" method="get" action="inscriptionverif.php">
Nom <input type="text" name="nom" value="$nom">
Age <input type="text" name="age" value="$age">
Courriel <input type="text" name="courriel" value="$courriel">
<input type="submit" name="Submit" value="Envoyer">
</form>
FORMULAIRE;
} // function formulaire ($nom, $age, $courriel)

if ($courriel == "") { // si 1er appel afficher le formulaire
echo <<<INTRO
<p><font size="2" color="#0000FF">7&egrave;me exercice : Mettre en application
la forme normale de transmission de variables entre scripts par formulaire :<br>
faire un script contenu dans le fichier inscription.php pour saisir (m&eacute;thode
GET) les coordonn&eacute;es du visiteur : nom, &acirc;ge, et adresse de courriel.
</font></p>
INTRO;
formulaire ($nom, $age, $courriel);
} // if ($courriel == "")

else { // appel depuis le formulaire
// vérifier la saisie :
// age : entier positif, <123
// courriel : de la forme chaine@chaine.chaine

function verifie_courriel ($adresse_courriel) {
// on utilise la fonction php
// int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
// qui retourne la position numérique de la première occurrence de needle dans la chaîne de caractères haystack.
// Si needle n'est pas trouvé, strpos() retournera FALSE.
$position_arobase = strpos($adresse_courriel, "@");
if (!$position_arobase)
return FALSE;
else {
$position_point = strpos($adresse_courriel, ".", $position_arobase);
return $position_point;
}
}

$age_correct = ($age>0) && ($age<123) ;
$courriel_correct = verifie_courriel ($courriel);

if ($age_correct && $courriel_correct) {
// tout est OK : post-back : afficher les données saisies
echo <<<AFFICHER
<p>Vous avez saisi :<br>
Nom : $nom<br>
Age : $age<br>
Courriel : <a href="mailto:$courriel">$courriel</a><br>
</p>
<p align="center"><a href="inscriptionverif.php">Retour au formulaire de saisie</a></p>
AFFICHER;
} // if ($age_correct | $courriel_correct)

else {
// erreur de saisie : réafficher le formulaire en signalant les valeurs erronées
if (!$age_correct)
echo "<br><font color='red'>ERREUR : l'&acirc;ge indiqu&eacute; est erron&eacute; </font><br>" ;
if (!$courriel_correct)
echo "<br><font color='red'>ERREUR : l'adresse de courriel indiqu&eacute;e est erron&eacute;e </font><br><br>" ;
formulaire ($nom, $age, $courriel);
} // else ($age_correct | $courriel_correct)

} // else ($courriel == "")

?>

</body>
</html>