148 lines
6.1 KiB
Markdown
148 lines
6.1 KiB
Markdown
---
|
||
title: "Formulaire pour l’abonnement / le désabonnement"
|
||
date: "2018-04-11"
|
||
categories:
|
||
- "listes-de-diffusion"
|
||
---
|
||
|
||
Un formulaire web pour l'abonnement/désabonnement à vos listes.
|
||
|
||
<!--more-->
|
||
|
||
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>
|
||
```
|