documentation/Sympa/formulaire-pour-labonnement.../index.md

148 lines
6.1 KiB
Markdown
Raw Normal View History

---
title: "Formulaire pour labonnement / le désabonnement"
date: "2018-04-11"
categories:
- "listes-de-diffusion"
---
 Un formulaire web pour l'abonnement/désabonnement à vos listes.
<!--more-->
Pour quun utilisateur puisse sabonner à 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, cest presque la même chose ; le sujet du message doit être :
`unsubscribe nomdelaliste`
Il faut être attentif pour le désabonnement que ladresse de courriel utilisée soit bien celle qui était abonnée.
Vous pouvez donc créer un lien pour labonnement :
`<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 dutiliser un formulaire (quon peut mettre en bas dune 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>
```