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

148 lines
6.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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>
```