Designed by Gaetan !
64 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter






   

Inscription contrôlée à une NewsLetter ou Service (1/3)

Abonnement avec confirmation et désabonnement





DB77
Les procédures d'abonnement à une lettre d'information (newsletter) sont souvent demandées sur le forum. La question la plus fréquente étant « Comment savoir si l'adresse électronique est bonne ? »...
Le principe étudié ici peut également être adapté pour des abonnements/inscriptions à des services comme j'ai été amené à le développer pour l'inscription à un système de réservation en ligne à une salle de formation aux langues étrangères.
Voyons donc, pas à pas, comment faire pour être sûr d'enregistrer une adresse électronique valide et comment proposer à nos inscrits une option pour se désabonner.


Le formulaire - L'abonnement/désabonnement - L'envoi des lettres


 Contexte 
Le problème à résoudre est multiple :
- proposer un formulaire d'abonnement à nos visiteurs ;
- vérifier que l'adresse électronique saisie par l'abonné est valide ;
- proposer un lien de désabonnement pour ceux qui en ont assez de nous lire ;).
Il est clair que tout cela va nous obliger à créer une base de données pour y stocker les adresses électroniques de nos abonnés et éventuellement d'autres informations.
Nous nous limiterons, dans notre exemple, au nom, au prénom et à l'adresse électronique.

Le formulaire d'abonnement


En ASP (demande_inscription.asp)

<% 
' Envoi de mail avec confirmation - Denis Blomme - DB77
if request.form("ok")="Valider" then
   ' Envoi du mail de confirmation au futur abonné
   ' on prépare le corps du message
   corps="<HTML><BODY><FONT FACE='Arial, Verdana' SIZE=2>"
   corps=corps & "Pour activer votre inscription, cliquez sur ce lien : <a href="
   corps=corps & chr(34) & "http://site/inscription.asp?nom=" & UCase(request.form("nom"))
   corps=corps & "&prenom=" & request.form("prenom")
   corps=corps & "&mail=" & request.form("mail")
   corps=corps & "&abo=1" & chr(34)&">confirmation</a>"
   corps=corps+"</BODY></HTML>"
   ' On paramètre les autres infos avant envoi
   Set Mail = Server.CreateObject("Persits.MailSender")   
   Mail.Host = "smtp.a.moi"
   Mail.From = "mon.mel@a.moi"
   Mail.FromName = "Mon Nom"
   Mail.Subject = "Demande d'inscription"
   Mail.Body = corps
   Mail.IsHTML = True 'si True
   Mail.AddAddress request.form("mail")
   Mail.Send
   Set Mail=nothing
   %>
<script language="Javascript">
   alert("Vous allez recevoir un mail de confirmation.");self.close();
   </script>
<%
end if
%>

<html>
<head>
<title>Mon site</title>
<link rel="stylesheet" href="../inc/style.css" type="text/css">
<script language="Javascript">
function valider()
{   mes="";
   if (document.frm.nom.value==""){mes=mes+"\n- votre nom");}
   if (document.frm.prenom.value==""){mes=mes+"\n- votre prénom");}
   if (document.frm.mail.value==""){mes=mes+"\n- votre mél");}
// si tout Ok alors on envoie
if(mes!=""){alert("Veuillez renseigner :"+mes);return false;}
if(mes==""){return true;}
}
</script>

</head>
<body bgcolor="white" text="#336699" link="#336699" alink="Black" vlink="#336699">
<form name="frm" action="demande_inscription.asp" method="post" onSubmit="return valider()">
<table width="400" border=0 cellpadding=2 cellspacing=0>
 <tr align="left" class=grise><td valign="center" background="images/400-haut.gif">
    <font face="Verdana, Arial, Sans-serif" size="1" color="#FFFFFF">
    <b>&nbsp;&nbsp;Demande d'inscription</b></font>
 </td></tr>
 <tr>
<td align="left" class=bleue ><p align="left"><font face="Verdana, Arial, Sans-serif" size="1">
   <table width="390"><tr>
   <td align=right valign=top><font face="Arial, Verdana, sans-serif" size="1">Votre nom : </font></td>
   <td align=left valign=top><input type="text" name="nom" size="30"></td>
   </tr><tr>
   <td align=right valign=top><font face="Arial, Verdana, sans-serif" size="1">Votre prénom : </font></td>
   <td align=left valign=top><input type="text" name="prenom" size="30"></td>
   </tr><tr>
   <td align=right valign=top>
   <font face="Arial, Verdana, sans-serif" size="1">Votre adresse électronique : </font></td>
   <td align=left valign=top><input type="text" name="mail" size="30"></td>
   </tr><tr>
   <td align="center" colspan=2><input type="submit" name="ok" value="Valider"></td>
   </tr></table>
</td></tr></table>
</form>
</body>
</html>

Et en PHP (demande_inscription.php)

<?
if(@$_POST["ok"]=="Valider"){
   // Envoi du mail de confirmation au futur abonné
   // on prépare le corps du message
   $corps="<HTML><BODY><FONT FACE='Arial, Verdana' SIZE=2>";
   $corps.="Pour activer votre inscription, cliquez sur ce lien : <a href=";
   $corps.=chr(34)."http://site/inscription.php?nom=".strtoupper($_POST["nom"]);
   $corps.="&prenom=".$_POST["prenom"];
   $corps.="&mail=".$_POST["mail"];
   $corps.="&abo=1".chr(34).">confirmation</a>";
   $corps.="</BODY></HTML>";
   // On paramètre les autres infos avant envoi
   $subject = "Demande d'inscription";
   $TO = $_POST["mail"];
   $h = "From: mon.mel@a.moi\nContent-Type: text/html; charset=iso-8859-1\n";
   mail($TO, $subject, $corps, $h);
   ?>
<script language="Javascript">
   alert("Vous allez recevoir un mail de confirmation.");self.close();
   </script>
<?
}
?>

<html>
<head>
<title>Mon site</title>
<link rel="stylesheet" href="../inc/style.css" type="text/css">
<script language="Javascript">
function valider()
{   mes="";
   if (document.frm.nom.value==""){mes=mes+"\n- votre nom");}
   if (document.frm.prenom.value==""){mes=mes+"\n- votre prénom");}
   if (document.frm.mail.value==""){mes=mes+"\n- votre mél");}
// si tout Ok alors on envoie
if(mes!=""){alert("Veuillez renseigner :"+mes);return false;}
if(mes==""){return true;}
}
</script>

</head>
<body bgcolor="white" text="#336699" link="#336699" alink="Black" vlink="#336699">
<form name="frm" action="demande_inscription.php" method="post" onSubmit="return valider()">
<table width="400" border=0 cellpadding=2 cellspacing=0>
 <tr align="left" class=grise><td valign="center" background="images/400-haut.gif">
    <font face="Verdana, Arial, Sans-serif" size="1" color="#FFFFFF">
    <b>&nbsp;&nbsp;Demande d'inscription</b></font>
 </td></tr>
 <tr>
<td align="left" class=bleue ><p align="left"><font face="Verdana, Arial, Sans-serif" size="1">
   <table width="390"><tr>
   <td align=right valign=top><font face="Arial, Verdana, sans-serif" size="1">Votre nom : </font></td>
   <td align=left valign=top><input type="text" name="nom" size="30"></td>
   </tr><tr>
   <td align=right valign=top><font face="Arial, Verdana, sans-serif" size="1">Votre prénom : </font></td>
   <td align=left valign=top><input type="text" name="prenom" size="30"></td>
   </tr><tr>
   <td align=right valign=top>
   <font face="Arial, Verdana, sans-serif" size="1">Votre adresse électronique : </font></td>
   <td align=left valign=top><input type="text" name="mail" size="30"></td>
   </tr><tr>
   <td align="center" colspan=2><input type="submit" name="ok" value="Valider"></td>
   </tr></table>
</td></tr></table>
</form>
</body>
</html>


Que se passe-t-il ensuite ?


Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  07/09/08 12:25 de JPierre
Hello Denis J'assaye d'integrer ton script mai sj'ai...
  • 07/09/08 12:34 de DB77 Salut JPierre, quel est le message d'erreur...
  • 07/09/08 12:40 de DB77 Tu peux aussi essayer avec mysql_numrows au...
  • 07/09/08 13:17 de DB77 J'ai rempli en ligne sur micro-mole, mais n...
  • 07/09/08 13:55 de JPierre Pourtant moi je reçoit bien le mail, l...
  • 07/09/08 15:00 de DB77 Il manque les esperluettes entre les variab...
  • 07/09/08 16:44 de DB77 Alors JPierre, quoi de neuf ? Pour mysql_n...
  •   v1.3p © ASP-PHP.net 2002  

    DB77 le 07/09/2008 (49 396 hits)
    Didier Testez gratuitement la plateforme web de Windows Server 2008 !
    Gagnez un voyage aux Etats-Unis pour la MS Project Conference !
    Au fil des news  
    Adobe - Adobe annonce MAX 2009 !
    [MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
    Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
    PHP - News avec photo - Système de gestion - affichage
    Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
    Dreamweaver Php Mysql - Région répétée imbriquée
    Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
    Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
    Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
    PHP - Le Coach PHP sur Visual Studio
    .NET - Ecrire une application .NET utilisant MySQL
    PHP - Utilisation de PHP dans le monde Microsoft
    Magazines - Le n° 119 de Programmez est disponible
    Adobe - Adobe annonce Photoshop Marketplace
    [MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
    Mis à jour le 20/04/2009
    Captcha «maison» sans extension - Et en plus, c'est gratuit ;)
    Un ami m'a demandé de l'aide ce matin pour insérer un captcha dans un formulaire pour son site ...
    Dreamweaver CS4 - Photoshop CS4 - Alliance parfaite pour la gestion des images
    Pour changer un peu des pages de code, je vous propose de voir ensemble, la fonctionnalité très ...
    JavaScript - Calcul automatique d'une facture
    Amélioration du Search MOSS: Manipulation XSL - Utilisation du XSL dans l'affichage des résultats
    Parmi tous les articles sur l'amélioration du moteur de recherche de Microsoft Office SharePoint ...
    Outils - Editeur d'icônes IcoFX
    Magazines - Le n°118 de Programmez est disponible
    JavaScript - Imprimer une autre page que celle en cours
    CSS - div pour imiter frame (Bandeau/Menu FIXES)
    [MAJ] [PHP] Un calendrier très complet -
    ajout des événements au calendrier
    PowerShell - Winforms pour l'aide des commandes GET PowerShell
    Adobe - Adobe Photoshop Lightroom 2 est offert ....
    Amélioration du Search MOSS: synonyme et Best Bet - La gestion des synonymes dans MOSS Search
    Le moteur de recherche de MOSS permet la configuration d'une liste de synonymes. Nous verrons donc ...
    AJAX - récup champs formulaires pour POST en AJAX
    PowerShell - Un windows Forms pour SharePoint en PowerShell
    Sondage associatif (compatibilité) - Qui va bien avec qui ?
    Cette fois, c'est un petit sondage que je vous propose. Il pourra bien sûr être adaptée à vos ...
    ASP - Hashage MD5 (cryptage irréversible)
    Adobe - 80% de réduction sur les versions Adobe Creative
    CSharp - Interroger un serveur Whois
    CSharp - Equivalent de la fonction PHP htmlentities()
    CSharp - Somme de contrôle CRC32
    Magazines - Le n°117 de Programmez est disponible
    Hebergement - Hébergement ASP et ASP.Net
    MOSS - Mon Profil - Personnalisation des profils utilisateurs de MOSS
    La gestion des profils utilisateurs de SharePoint fait partie des fonctionnalités de base de ...
    Dreamweaver CS3 + Php + Mysql - Le Jeu d'Enregistrements - Les fondamentaux Part-3
    La 3ème partie des fondamentaux, traitera essentiellement du jeu d'enregistrements ou Recordset. ...
    Mon mini-site @ Home - avec Windows, Free, Wamp & DynDNS
    Envie d'héberger votre petit site chez vous, sur votre ordinateur ? de partager des fichiers avec ...
    Magazines - Le n°116 de Programmez est disponible
    Recevoir ses identifiants par mél - Bien pratique pour les petites têtes
    Encore une question posée sur le forum et zou... Le problème est simple : On a oublié ses ...
    ASP.NET - code pour le bouton enregistrer
    Microsoft - Grand jeu-concours MSDN : l'indice d'ASP-PHP.net !
    Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
    Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
      Scripts : Scripting | ASP-PHP | ASP.net | Divers
      Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
    v3b © Didier 2003   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     Wygwam TechNet CodePPC The Inquirer FR Groupes Utilisateurs Microsoft MVP El Roubio ASP-magazine DotNet Project Codes Sources