Formulaire pour l’abonnement / le désabonnement

 Un formulaire web pour l'abonnement/désabonnement à vos listes.

Pour qu’un utilisateur puisse s’abonner à une liste, la procédure habituelle consiste à envoyer un message au moteur qui gère la liste (sympa@mondomaine.delistes.tld) avec pour sujet :

subscribe nomdelaliste Prénom Nom (le « Prénom Nom » est facultatif)

Pour se désabonner, c’est presque la même chose ; le sujet du message doit être :

unsubscribe nomdelaliste

Il faut être attentif pour le désabonnement que l’adresse de courriel utilisée soit bien celle qui était abonnée.

Vous pouvez donc créer un lien pour l’abonnement :

<a href="mailto:sympa@mondomaine.delistes.tld?subject=subscribe nomdelaliste">abonnement</a>

Ou pour le désabonnement :

<a href="mailto:sympa@mondomaine.delistes.tld?subject=unsubscribe nomdelaliste">désabonnement</a>

Mais il peut être pratique aussi d’utiliser un formulaire (qu’on peut mettre en bas d’une page : « abonnement à notre newsletter »). Nous vous proposons une formulaire standard à configurer, que vous pouvez réutiliser, modifier, distribuer à votre guise.

<!--
***************************************************************************
Script téléchargé sur https://ouvaton.coop

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the
Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
***************************************************************************
-->
<!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" lang="fr">

    <head>
        <title>Souscription à la liste de diffusion</title>
        <meta http-equiv="Content-type" content="application/xhtml+xml; charset=UTF-8" />
    </head>

    <body>
        <?
        /* configuration du script */
        $domaine = "votre.domainedeliste.tld" ; // obligatoire : donner le nom du domaine de liste
        $nombrelistes = 1 ; // obligatoire: remplir le nombre de listes définies ci-dessus
        $liste1 = "nomdelaliste" ; // obligatoire : donner au moins 1 nom de liste
        $liste2 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes
        $liste3 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes
        $liste4 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes
        $liste5 = "nomdelaliste" ; // facultatif, si choix entre plusieurs listes
        /* fin de la config */

        // test de sécurité si le formulaire a été envoyé
        if (isset($_POST["send"]) ) {
            $secure = true ;
            $from = $_POST["from"] ;
            //test de l'adresse mail
            if(!preg_match('/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i',$from)) {
                echo('Adresse de courriel Invalide <br />') ;
                $secure = false ;
            }
        }

        // Si le formulaire n'a pas été envoyé ou n'est pas secure, on l'affiche
        if (!$secure) { ?>

        <form action="<? $_SERVER["PHP_SELF"] ?>" method="post">
            <fieldset>
                <legend style="margin-bottom: 5px;">S'abonner ou se désabonner (<strong>*</strong> champs obligatoires)</legend>
                <label for="prenom">Prénom :</label> <input id="prenom" name="prenom" type="text" value="<? if ($_POST["prenom"]) echo $_POST["prenom"]?>" /><br />
                <label for="nom">Nom :</label> <input id="nom" name="nom" type="text" value="<? if ($_POST["nom"]) echo $_POST["nom"]?>" /><br /><br />
                <label for="from">Adresse de courriel<strong>*</strong> : </label> <input id="from" name="from" type="text" value="<? if ($_POST["from"]) echo $_POST["from"]?>" /><br /><br />
                Je veux<strong>*</strong> :<br />
                <input name="action" type="radio" value="SUBSCRIBE" /> m'abonner à...<br />
                <input name="action" type="radio" value="UNSUBSCRIBE" /> me désabonner de...<br /><br />
                <label for="liste">... la liste<strong>*</strong> :</label>
                    <select id="liste" name="liste">
                    <? if ($nombrelistes >= 1) { ?>
                    <option value="<? echo $liste1;?>"><? echo $liste1;?></option>
                        <? if ($nombrelistes >= 2) { ?>
                        <option value="<? echo $liste2;?>"><? echo $liste2;?></option>
                        <? if ($nombrelistes >= 3) { ?>
                            <option value="<? echo $liste3;?>"><? echo $liste3;?></option>
                            <? if ($nombrelistes >= 4) { ?>
                                <option value="<? echo $liste4;?>"><? echo $liste4;?></option>
                                <? if ($nombrelistes == 5) { ?>
                                    <option value="<? echo $liste5;?>"><? echo $liste5;?></option>
                                <? }
                                }
                            }
                        }
                    } ?>
                    </select><br /><br />
                <input value="Envoyer" name="send" type="submit" />
            </fieldset>
        </form>

        <?
        } else {
            // Si c'est ok - sécurisé et données
            // on crée le nom complet
            $nomcomplet = $_POST["prenom"] ." " .$_POST["nom"];
            // puis le header du message
            $headers = "From: ".$from."\n" ;
            // puis les arguments
            $to = "sympa@" .$domaine ;
            $subject = "" ;
            if ($_POST["action"] == "SUBSCRIBE") {
                $message = $_POST["action"]." ".$_POST["liste"]." ".$nomcomplet;
            } else {
                $message = $_POST["action"]." ".$_POST["liste"];
            }

            // On envoie le mail :
            if ( mail($to,$subject,$message,$headers) ) {
                // Si le mail a bien été envoyé, message de confirmation
                echo "Votre abonnement/désabonnement a bien été pris en compte.<br />";
            } else {
                // sinon, message d'erreur.
                echo "Votre abonnement/désabonnement n\'a pas pu être envoyé.<br />";
            }
        } ?>
        <p><a href="http://validator.w3.org/check?uri=referer"><img style="border:0px;" src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a></p>
    </body>
</html>