Bonjour,

J'ai fait un formulaire pour récupérer certaines données des gens intéressés. Je voudrais que les données soient envoyés par email (ça je sais faire) mais sans que cela ouvre le soft.

Jje veux qu'une fois les données entrées, et le bouton submit appuyé, ils aient un message comme quoi leur email a bien été envoyé.

On fait comment? Je cherche depuis un moment, et je trouve rien de vraiment explicite.

Sinon je pourrais récupérer les données dans une base de données (ça aussi je sais faire) pour ensuite me servir d'une interface pour les lire, mais il faut que l'on soit instantanément
au courant. Donc c'est pas trop la solution.

Comment qu'on fait en gros??

merci
Salut tabaluga72,

Si tu ne souhaite pas utiliser le mailto:xxx dans ton formulaire, tu peux très bien créer du code serveur pour envoyer un mail directement. Après sa dépend de la technologie que tu utilise (JSP,ASP,PHP,....)

Si jamais voilà un exemple pas trop mal foutu pour envoyer un mail avec php.

@+
voici déjà quelque façon de la protéger.


   /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
    
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://****.php')
    {
      header('Location:  http://***.html');
 
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($prenom) 
           || empty($expediteur) 
           || empty($adresse)
           || empty($pays))
		      {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
Salut,

@overcraft > étant donné que $_SERVER['HTTP_REFERER'] n'est pas forcément renseigné (paramétrage du navigateur ou autre) ce test est en trop à mon avis. Smiley cligne

D'ailleurs tout ça me semble un brin compliqué.

Sinon j'ai cet article dans mes favoris si ça peut dépanner...
Bonjour

Merci pour les réponses. Je met de côté ce formulaire pour le moment car il y a tellement de chose à faire pour ce site (en autre prendre beaucoup de photos) que je garde le plus compliqué pour la fin.

D'ailleurs quand vous faites un site, vous commencer par la machinerie ou le design?

[EDIT] j'ai oublié de dire ce que j'avais déja fait. Je vérifie les données quand le visiteur rempli le formulaire avec des fonctions javascript. Quand le champs est pas conforme, il se colore en couleur.

function surligne(champ, erreur)
{
   if(erreur)
      champ.style.backgroundColor = "#ff6666";
   else
      champ.style.backgroundColor = "";
}

function verifYear(champ)
{
   var year = parseInt(champ.value);
   if(isNaN(year) || year < 2009 || year > 2020)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}

function verifMonth(champ)
{
   var month = parseInt(champ.value);
   if(isNaN(month) || month < 01 || month > 31)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}

function verifDay(champ)
{
   var day = parseInt(champ.value);
   if(isNaN(day) || day < 01 || day > 31)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}

function verifName(champ)
{
   if(champ.value.length < 2 || champ.value.length > 25)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}

function verifSurname(champ)
{
   if(champ.value.length < 2 || champ.value.length > 25)
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}

function verifMail(champ)
{
   var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
   if(!regex.test(champ.value))
   {
      surligne(champ, true);
      return false;
   }
   else
   {
      surligne(champ, false);
      return true;
   }
}


function verifForm(f)
{
   	var nameOk = verifName(f.name);
   	var surnameOk = verifSurname(f.surname);
   	var mailOk = verifMail(f.email);
   	var yearOk = verifYear(f.year);
   	var monthOk = verifMonth(f.month);
	var dayOk = verifDay(f.day);

   
   if(nameOk && mailOk && surnameOk && yearOk && monthOk && dayOk)
      return true
   else
   {
      alert("Veuillez remplir correctement tous les champs");
      return false;
   }
}


Je me suis arrêté là. J'ai lu qu'il fallait vérifier côté visiteur et côté serveur.

Donc le visiteur valide le formulaire et là je vérifie avec ce que vous m'avez montré, c'est bien ça ?
Modifié par tabaluga72 (26 Feb 2009 - 15:22)