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 :
- Vérifier que l'accès à cette page se fait bien via la page de vérification des données du site;
- Formater une fiche et l'envoyer par courrier électronique au responsable du site ainsi qu'une copie à la personne qui s'est inscrite;
- Enregistrer les données dans la base de données du site afin de les conserver et de pouvoir les utiliser plus tard.
<?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.
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.