Designed by Maunakea !
60 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  14/12/09 03:33 de olivierparis
C peut être une table liste avec comme champs nom pre...
  • 14/12/09 07:30 de DB77 En regardant le code, ce qui est la moindre...
  • 14/12/09 07:31 de DB77 Attention, j'ai fait une petite erreur au n...
  •  Lire  14/12/09 03:28 de olivierparis
    bsr tres bon tuto !!! Mais je ne vois pas la bdd ?...
     Lire  30/07/09 10:05 de gervany
    j'ai suivi toutes les étapes mais je recois rien meme...
  • 30/07/09 10:12 de DB77 Pour envoyer un mél, il faut un serveur SMT...
  •   v1.3p © ASP-PHP.net 2002  

    DB77 le 07/09/2008 (59 551 hits)
    Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
    • Visual Studio 2010
    • Office 2010
    • Expression Studio 3
    • SQL Server 2008
    • et d'autres...
    Au fil des news  
    Magazines - Le N°128 de Programmez est disponible
    Magazines - Le N°127 de Programmez est disponible
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
    Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
    Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
    JavaScript - Ajouter une page dans vos favorites
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
    Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
    SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
    Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
    Magazines - Le n°126 de Programmez est disponible
    Outils - Traducteur en ligne automatique pour site web
    Adobe - Adobe Photoshop.com Mobile pour Iphone
    Magazines - Le n°125 de Programmez est disponible
    Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
    Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
    Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
    Magazines - Le n°124 de Programmez est disponible
    PHP - Forum PHP 2009
    Composants - eFace - XAML en Java
    WPF - Désactiver le bouton de réduction d'une fenêtre
    Magazines - Le n°123 de Programmez est disponible
    Magazines - Le n°122 de Programmez est disponible
    Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
    Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
    SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
    Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
    Magazines - Le HS N° 1 de Web Design est disponible
    Adobe - Adobe propose en Open Source les frameworks.....
    Outils - EntityBuilder
    CSharp - Sérialisation XML de vos objets
    Magazines - Le n°121 de Programmez est disponible
    Adobe - Adobe annonce MAX 2009 !
    Outils - WhoIs
    [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 ...
    Outils - Crypt
    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 ...
    Magazines - Le n° 120 de Programmez est disponible
    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
    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
     TechNet DotNet Project ASP-magazine Groupes Utilisateurs Microsoft MVP