Exercice en PHP - Le traitement d'un formulaire d'inscription

On arrive maintenant au stade final. Toutes les données ont été vérifiées et envoyées à cette page de traitement.

Ce traitement va consister en trois actions :

  1. Vérifier que l'accès à cette page se fait bien via la page de vérification des données du site;
  2. Formater une fiche et l'envoyer par courrier électronique au responsable du site ainsi qu'une copie à la personne qui s'est inscrite;
  3. Enregistrer les données dans la base de données du site afin de les conserver et de pouvoir les utiliser plus tard.
<h1>Traitement de l'inscription</h1>
<?PHP // On entre en exécution du PHP

// Acte 1 : vérification de la provenance des données
// La première chose à faire est de vérifier si la demande d'exécution vient bien de la page de vérification
$controle = $_POST['controle']; // On copie le champ reçu par POST dans une variable
if ($controle != "sD=51Lk@jHeC1Mpa-") { // Si le code est différent de celui qu'on a envoyé
  echo "<p>Veuillez compléter le formulaire pour commencer votre inscription</p>";
  echo "<p><a href='formulaire.html'>Accéder au formulaire</a></p>"; // Lien pour retourner au formulaire (à adapter à votre cas)
  exit; // Provoque l'arrêt anticipé et définitif de l'exécution du script de cette page
  }

// Acte 2 : formatage et envoi des données par courriel
// On récupère tous les champs reçus pour les copier dans des variables et faciliter ainsi le traitement
$sexe = $_POST['sexe'];
if ($sexe == "m")
  $mention = "Homme";
else
  $mention = "Femme";
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$login = $_POST['login'];
$passw = $_POST['passw'];
$courriel = $_POST['courriel'];
$ville = $_POST['ville'];
$pays = $_POST['pays'];
// Enregistrement de la date et l'heure du serveur grâce à la fonction getDate();
$current_date = getDate();
// Prélèvement de la valeur des minutes
$les_minutes = $current_date["minutes"];
// Si les minutes ne font qu'un rang, on concatène un 0 devant
if (strlen($les_minutes) == 1)
   $les_minutes = "0" . $les_minutes;
// Prélèvement du numéro du mois
$le_mois = $current_date["mon"];
// Si le numéro du mois ne fait qu'un rang, on concatène un 0 devant
if (strlen($le_mois) == 1)
   $le_mois = "0" . $le_mois;
// Formatage de la date dans une variable, séparation par des barres obliques ou slashs
$date_actuelle = $current_date["mday"] . "/" . $le_mois . "/" . $current_date["year"]; // Formatage de l'heure dans une variable, séparation par 'h'
$heure_actuelle= $current_date["hours"] . "h" . $les_minutes;
// On réalise le contenu proprement dit du message par concaténation (\n = passage à la ligne)
$message = "Accusé de réception\nDate : " . $date_actuelle . " Heure : " . $heure_actuelle;
$message .= "\n============================================\nCopie de votre demande d'inscription à la plate-forme 'XYZ.org'";
$message .= "\n\n".$mention."\nNom : ".$nom."\nPrénom : ".$prenom."\nIdentifiant : ".$login."\nMot de passe : ".$passw."\nCourriel : ".$courriel."\nVille : ".$ville."\nPays : ".$pays;
// On réalise le courriel à destination du webmaster du site
$headers_pour_webmaster = 'From: '.$courriel;
// Attention, pas d'accent dans l'objet du message, sinon erreur d'envoi
mail ("webmaster@XYZ.org", "Nouvelle demande d'inscription a la plateforme", $message, $headers_pour_webmaster);
// On complète le message et on envoie le courriel à destination de la personne qui s'est inscrite sur le site
$message .= "\n\nVotre avis d'accès à la plate-forme doit vous arriver endéans les 48 heures.\nSi ce n'est pas le cas, envoyez directement les coordonnées ci-dessus à webmaster@XYZ.org";
$headers_pour_expediteur = 'From: Webmaster ';
mail ($courriel, "Votre demande d'inscription a la plateforme", $message, $headers_pour_expediteur);
// On avertit la personne du déroulement de son inscription
echo '<p>Une copie de votre inscription à la plate-forme "XYZ.org" vous a été transmise.</p>';

// Acte 3 : enregistrement des données dans la base de données
// On va copier toutes les variables dans la base de données
// Comme le module MySQL n'a pas encore été abordé, il est normal que certains éléments soient difficilement compréhensibles
try { // On se connecte à la base de données du site
   $bdd = new PDO('mysql:host=localhost;dbname=nom_de_ma_base;charset=utf8', 'mon_identifiant', 'mon_mot_de_passe');
}
catch (Exception $e) { // En cas d'erreur, affichage de renseignements pour identifier cette erreur
   die('Erreur de connexion à la base de données : ' . $e->getMessage());
}
// On insère les données (INSERT) dans 'ma_table'
// On énumère d'abord dans l'ordre les champs qui seront affectés et ensuite les valeurs qui y seront inscrites
// Attention, il y a deux types différents d'apostrophes. Ne pas mettre d'espace quand un " est proche d'une '.
$mysql_result= $bdd->query('INSERT INTO `ma_table` (`date`, `sexe`, `nom`, `prenom`, `login`, `password`, `courriel`, `ville`, `pays`) VALUES (" '.$date_actuelle.' ", " '.$mention.' ", " '.$nom.' ", " '.$prenom.' ", " '.$login.' ", " '.$passw.' ", " '.$courriel.' ", " '.$ville.' ", " '.$pays.' ")');
if ($mysql_result) { // Vérification de l'enregistrement correct de la fiche
   echo "<p>Votre inscription s'est déroulée avec succès.</p>";
} else {
   echo "<p>Une erreur s'est déroulée lors de l'insertion de vos données dans la base de données.</p>";
   echo "<p>Veuillez contacter le webmaster pour lui signaler le problème.</p>";
}
// Sortie du PHP et retour au HTML
?>
<p><a href="index.html">Retour au site</a></p> <!-- href est à adapter en fonction de votre site -->

Terminez la page avec le final habituel.

Voici à quoi ressemble le profil de la table avec ses enregistrements. Ce profil peut être défini facilement grâce à phpMyAdmin. Tous les détails vous seront donnés dans un prochain module dédié aux bases de données MySQL.

ma_table
Profil de la table de stockage des inscrit.e.s

Voilà, ceci termine ce module d'introduction au PHP. Nous espérons que ceci vous a permis de maîtriser quelques bases de ce langage et que vous pourrez, par la suite, approfondir vos connaissances grâce à des lectures et des recherches sur Internet.

La meilleure façon d'apprendre est de développer vos propres projets...

Bon travail. N'hésitez pas à nous communiquer vos avis, cela nous intéresse au plus haut point.

Retour