Créer un système de newsletter

Formation

En Semi-présenciel Paris

Prix sur demande

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Description

  • Typologie

    Formation

  • Méthodologie

    En semi-présentiel

  • Lieu

    Paris

Grâce à cette formation vous pourrez acquérir les connaissances nécessaires qui vous permettrons d’ajouter des compétences à votre profil et obtenir de solides aptitude qui vous offriront de nombreuses opportunités professionnelles.

Les sites et dates disponibles

Lieu

Date de début

Paris ((75) Paris)
Voir plan
7 Cité Paradis, 75010

Date de début

Consulter

Questions / Réponses

Ajoutez votre question

Nos conseillers et autres utilisateurs pourront vous répondre

À qui souhaitez-vous addresser votre question?

Saisissez vos coordonnées pour recevoir une réponse

Nous ne publierons que votre nom et votre question

Les Avis

Les matières

  • Newsletter

Le programme

Introduction du cours

C'est inévitable, vous avez tous déjà eu l'envie de créer un système de newsletter. :p

C'est quoi, un système de newsletter ?

Ah ! Comme son nom l'indique, news : nouveautés, et letter : lettre. Ces mots proviennent de l'anglais. C'est un système permettant d'envoyer à une liste de membres les nouveautés de votre site. Voilà ! :D
Bon, avant de commencer la lecture de ce tutoriel, je vous conseille d'abord d'apprendre le PHP grâce au tuto de M@teo21.
On va alors pouvoir commencer ! ;)

Présentation

Alors, pour réaliser un système de newsletter, on va avoir besoin de plusieurs choses :

  • la fonction mail (elle est indispensable pour l'envoi) ;

  • une base de données MySQL ;

  • des cookies ;

  • un fichier .htaccess.

Bon, on va pouvoir commencer.
Votre système se décomposera en plusieurs pages.
Il y aura 2 répertoires :

  • le répertoire public, accessible à tout le monde ;

  • le répertoire privé, protégé par un mot de passe.

Voici ce que contient le répertoire public :

(Si si, les couleurs sont superbes ! :p )
Et voici ce que contient le répertoire privé (que vous devez protéger avec un fichier .htaccess) :

Je vais vous expliquer le fonctionnement ultra simple de ce système.
La personne va sur la page index.php. Là, l'utilisateur entre son adresse e-mail et choisit s'il veut s'inscrire ou se désinscrire. Ensuite, il reçoit un mail, avec un lien vers la page inscription.php ou desinscription.php, pour vérifier que l'adresse entrée était bien la sienne.
Sur la page inscription.php ou desinscription.php, il entre de nouveau son adresse e-mail pour vérifier ; si c'est la même, il est ajouté à la liste des inscrits ou en est retiré.

La base de données, elle, se compose de cette façon :

Le champ email contient l'adresse e-mail de la personne. Quand elle se désinscrit, l'adresse est supprimée de la BDD.

Si vous avez tout compris, on va pouvoir passer à la suite. :soleil:

Les différents fichiersindex.php

Nous allons commencer avec la page index.php, le fichier où l'on rentrera son adresse e-mail et qui enverra le mail de validation.
La première chose que l'on va étudier est le fonctionnement de ce fichier.

Une fois qu'on a rempli les champs, on vérifie si l'on souhaite s'inscrire. Puis on envoie un e-mail contenant le lien vers inscription.php, avec en variable l'adresse e-mail. On fait de même si l'on veut se désinscrire, mais cette fois-ci le lien pointera vers desinscription.php. :p

Si l'on détaille tout ça, on aura…

En premier, on va vérifier si les champs ont bien été remplis.

<?php if(isset($_GET['email'])) // On vérifie que la variable $_GET['email'] existe. { if( !empty($_POST['email']) AND $_GET['email']==1 AND isset($_POST['new'])) /* On vérifie que la variable $_POST['email'] contient bien quelque chose, que la variable $_GET['email'] est égale à 1 et que la variable $_POST['new'] existe. */ { ?>

On vérifie ensuite si $_POST['email'] contient bien une adresse, avec une regex.

<?php if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])) { ?>

Ensuite, on va regarder si l'on veut s'inscrire.

<?php if($_POST['new']==0) // Si la variable $_POST['new'] est égale à 0, cela signifie qu'on veut s'inscrire. { ?>

Puis, on envoie le mail avec le lien pour valider l'inscription.

<?php //On définit les paramètres de l'e-mail. $email = $_POST['email']; $message = 'Pour valider votre inscription à la newsletter de MonSite.fr, <a href="http://www.monsite.fr/inscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Inscription à la newsletter de MonSite.fr" ; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: monsite@monsite.fr' . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) // On envoie l'e-mail. { echo "Pour valider votre inscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer."; } else { echo "Il y a eu une erreur lors de l'envoi du mail pour votre inscription."; } ?>

Ensuite, si $_POST['new'] ne vaut pas 0, cela signifie que l'on veut se désinscrire.

<?php elseif($_POST['new']==1) // Si la variable $_POST['new'] est égale à 1, cela signifie qu'on veut se désinscrire. { ?>

Et on envoie le mail avec le lien pour valider la désinscription.

<?php // On définit les paramètres de l'e-mail. $email = $_POST['email']; $message = 'Pour valider votre désinscription de la newsletter de MonSite.fr, <a href="http://www.monsite.fr/desinscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Désinscription de la newsletter de MonSite.fr" ; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: monsite@monsite.fr' . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) { echo "Pour valider votre désinscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer."; }

Sinon, si ce qui a été rentré n'est pas une adresse e-mail, on le signale.

<?php else // Si on n'a pas rentré d'adresse e-mail. { echo 'Vous n\'avez pas entré une adresse e-mail valide ! Veuillez recommencer !'; } ?>

Et sinon, si les champs ne sont pas remplis, on affiche le formulaire.

<?php else { ?> La newsletter : <form method="post" action="index.php?email=1"> Adresse e-mail : <input type="text" name="email" size="25" /><br /> <input type="radio" name="new" value="0" />S'inscrire <input type="radio" name="new" value="1" />Se désinscrire<br /> <input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" /> </form> <?php } ?> </body> </html>

Et voici (enfin ^^ ) le fichier complet :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>La newsletter de MonSite.fr</title> </head> <body> <?php if(isset($_GET['email'])) // On vérifie que la variable $_GET['email'] existe. { if( !empty($_POST['email']) AND $_GET['email']==1 AND isset($_POST['new'])) /* On vérifie que la variable $_POST['email'] contient bien quelque chose, que la variable $_GET['email'] est égale à 1 et que la variable $_POST['new'] existe. */ { if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])) // On vérifie qu'on a bien rentré une adresse e-mail valide. { if($_POST['new']==0) // Si la variable $_POST['new'] est égale à 0, cela signifie que l'on veut s'inscrire. { // On définit les paramètres de l'e-mail. $email = $_POST['email']; $message = 'Pour valider votre inscription à la newsletter de MonSite.fr, <a href="http://www.monsite.fr/inscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Inscription à la newsletter de MonSite.fr" ; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: monsite@monsite.fr' . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) // On envoie l'e-mail. { echo "Pour valider votre inscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer."; } else { echo "Il y a eu une erreur lors de l'envoi du mail pour votre inscription."; } } elseif($_POST['new']==1) // Si la variable $_POST['new'] est égale à 1, cela signifie que l'on veut se désinscrire. { // On définit les paramètres de l'e-mail. $email = $_POST['email']; $message = 'Pour valider votre désinscription de la newsletter de MonSite.fr, <a href="http://www.monsite.fr/desinscription.php?tru=1&amp;email='.$email.'">cliquez ici</a>.'; $destinataire = $email; $objet = "Désinscription de la newsletter de MonSite.fr" ; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: monsite@monsite.fr' . "\r\n"; if ( mail($destinataire, $objet, $message, $headers) ) { echo "Pour valider votre désinscription, veuillez cliquer sur le lien dans l'e-mail que nous venons de vous envoyer."; } else { echo "Il y a eu une erreur lors de l'envoi du mail pour votre désinscription."; } } else { echo "Il y a eu une erreur !"; } } else { echo "Vous n\'avez pas entré une adresse e-mail valide ! Veuillez recommencer !"; } } else { echo "Il y a eu une erreur."; } } else // Si les champs n'ont pas été remplis. { ?> La newsletter : <form method="post" action="index.php?email=1"> Adresse e-mail : <input type="text" name="email" size="25" /><br /> <input type="radio" name="new" value="0" />S''inscrire <input type="radio" name="new" value="1" />Se désinscrire<br /> <input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" /> </form> <?php } ?> </body> </html>

Voir un exemple
Et maintenant, on peut passer aux autres fichiers. :D

inscription.php et desinscription.php

Alors là, c'est la grosse partie de ce tutoriel. Ce sont les fichiers qui ajoutent les adresses e-mail dans la base de données.

inscription.php

On commence donc par créer un cookie qui contient l'adresse e-mail pour le vérifier par la suite, et ce cookie est créé si $_GET['tru'] est égale à 1 : dans le lien pour l'inscription, il y a cette variable qui signifie que l'on vient de cliquer sur le lien de l'e-mail.

<?php if($_GET['tru']==1) { setcookie("email", $_GET['email'], time()+25); // On crée un cookie qui expirera 25 secondes plus tard pour des raisons de sécurité. } ?>

Puis on commence la page. Dans l'en-tête, il y a une redirection vers votre page d'accueil. Pour deux raisons : si on tarde à entrer son adresse e-mail ou si on l'a déjà entrée, donc si $_GET['tru'] est égale à 2 (on verra ça après).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <?php if($_GET['tru']==2) { ?> <meta http-equiv="refresh" content="1; url=http://www.MonSite.fr/" /> <!-- Redirection vers la page d'accueil du site si on a entré son e-mail. --> <?php } else { ?> <meta http-equiv="refresh" content="25; url=http://www.MonSite.fr/" /> <!-- Redirection vers la page d'accueil du site si on tarde trop à entrer son e-mail. --> <?php } ?> <title>Validation de votre inscription à la newsletter de MonSite.fr</title> </head>

Ensuite, si $_GET['tru'] est égale à 1, on affiche donc le formulaire.

<body> <p align="center"><font size="5">Validation de votre inscription</font></p> <?php if($_GET['tru']==1) //s Si la variable $_GET['tru'] est égale à 1. // On affiche le formulaire. { ?> <font color="red">Attention, vous avez 25 secondes pour remplir le formulaire. Passé ce délai, celui-ci ne sera plus valide.</font> <form method="post" action="inscription.php?tru=2"> Entrez votre adresse e-mail : <input type="text" name="email" size="25" /><br /> <input type="submit" value="Envoyer" name="submit" /> <input type="reset" name="reset" value="Effacer" /> </form> <?php }

Et sinon, si $_GET['tru'] est égale à 2, cela signifie qu'on a rempli le formulaire, on vérifie que l'email du cookie est identique à l'email entré. Si c'est la cas, on enregistre l'adresse e-mail dans la base de données.

<?php elseif($_GET['tru']==2) // Sinon, si la variable $_GET['tru'] est égale à 2. { mysql_connect("localhost", "login", "pass"); mysql_select_db("db"); $email_mail = mysql_real_escape_string($_COOKIE['email']); $email_entre = mysql_real_escape_string($_POST['email']); if($email_entre==$email_mail) // Si les deux adresses e-mail sont identiques. { mysql_query("INSERT INTO newsletter VALUES('" . $email_entre . "')"); // On l'inscrit dans la base de données MySQL. echo "Vous avez bien été inscrit à la newsletter de MonSite.fr ! Vous allez être redirigé dans 1 seconde."; } else { echo "Vous n'avez pas entré la bonne adresse e-mail !"; } } else { echo "Il y a eu une erreur."; } ?> </body> </html>

Et voici maintenant le code complet de la page inscription.php :

<?php if($_GET['tru']==1) { setcookie("email", $_GET['email'], time()+25); // On crée un cookie qui expirera 25 secondes plus tard pour des raisons de sécurité. } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <?php if($_GET['tru']==2) { ?> <meta http-equiv="refresh" content="1; url=http://www.MonSite.fr/" /> <!-- Redirection vers la page d'accueil du site si on a entré son e-mail. --> <?php } else { ?> <meta http-equiv="refresh" content="25; url=http://www.MonSite.fr/" /> <!-- Redirection vers la page d'accueil du site si on tarde trop à entrer son e-mail. --> <?php } ?> <title>Validation de votre inscription à la newsletter...

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Créer un système de newsletter

Prix sur demande