Récup de données formulaire PHP via mail
Hors ligneFidecourt Le 07/03/2010 à 16:40 Profil de Fidecourt Configuration de Fidecourt

formulaire avec des cases à cocher, des radios boutons etc...,

mon problème est dans la récup dans le mail, quelqu'un pourrait il m'aider sur ce problème ou m'orienter vers un tuto qui fait appel à un mail en récup de données

voici mon formulaire de base pour test :

[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<? // Exemple d'envoi de formulaire

// Interface PHP pour mail()
function sendMail($mFrom,$mTo,$sujet,$body) {
   // l'émetteur
   $tete = "From: ".$mFrom."\n";
   $tete .= "Reply-To: ".$mFrom."\n";
   // et zou... false si erreur d'émission
   return mail($mTo,$sujet,$body,$tete);
}
 
// SI LE FORM A ETE POSTE
if(!empty($_POST["mail"])) {
   // Récupère les éléments du form
   $temp="";
   while (list($truc, $val) = each($HTTP_POST_VARS))
      $temp .= $truc." : ".$val."\n\n";
   // Caractères spéciaux
   $temp = stripslashes($temp);
   // Envoie le message
   // L'émetteur est aussi le récepteur dans cet exemple !
   if(@sendmail($_POST["mail"],$_POST["mail"],"Demande via Internet",$temp)) {
      // Affiche un message de confirmation
      echo "Le formulaire a bien été envoyé à <b>".$_POST["mail"]."</b> !";
   } else {
      // ou un message d'erreur
      echo "<font color=red>Impossible d'envoyer le formulaire !</font>";
   }
// SINON AFFICHAGE DU FORM
} else { ?>
   <script language="JavaScript">
      // Teste si le mail a une forme correcte
      function checkmail(mail) {
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
         return (reg.exec(mail)!=null)
      }
      // Teste le contenu des champs du form avant submit
      function test(nom,mail) {
         if(nom.value=="") {
            alert("Indiquez votre nom !"); nom.focus(); return false;
         } else if(!checkmail(mail.value)) {
            alert("Email incorrect !"); mail.focus(); return false;
         }
         return true;
      }
   </script>
   <table><form method="post" action="contactmail.php">
      <tr>
         <td>Nom<br><input name="Nom"></td>
         <td>Email<br><input name="mail"></td>
      </tr><tr>
         <td colspan=2 align=center>Message<br>
            <textarea wrap=virtual rows=5 cols=35 name="msg"></textarea></td>
      </tr><tr>
         <td align=center>Sexe
            <input type="radio" name="Sexe" value="Homme" checked>M
            <input type="radio" name="Sexe" value="Femme">F</td>
         <td align=center>pays
            <select name="Pays">
               <option>France</option>
               <option>Belgique</option>
               <option>Suisse</option>
               <option>Autre</option>
            </select></td>
      </tr>
      <tr>
        <td colspan=2 align=center><p>
          <label>
            <input type="checkbox" name="habitat" value="hameau" id="habitat_0" />
            hameau</label>
          <br />
          <label>
            <input type="checkbox" name="habitat" value="village" id="habitat_1" />
            village</label>
          <br />
          <label>
            <input type="checkbox" name="habitat" value="petite ville" id="habitat_2" />
            petite ville</label>
          <br />
          <label>
            <input type="checkbox" name="habitat" value="grande ville" id="habitat_3" />
            grande ville</label>
          <br />
        </p></td>
      </tr>
      <tr>
         <td colspan=2 align=center>
            <input type="checkbox" name="newsletter">
               Recevoir la newsletter</td>
      </tr>
      <tr>
        <td colspan=2 align=center><tr>
       
          <td width="39%" height="58"><div align="left">Code de sécurité</div></td>
          <td width="61%"><div align="left"><img src="cryptimage.php" width="160" height="30" alt="image de securisation du formulaire" title="image de securisation du formulaire" /></div></td>
        </tr>
        <tr>
          <td><div align="left">Recopier la combinaison ci dessus dans le champ qui suit :</div></td>
          <td><div align="left">
           
              <label>
                <input name="verif" type="text" size="10" maxlength="5" />
              </label>
          
          </div></td>
       
      <tr>
         <td colspan=2 align=center><br>
            <input type="submit" value="Envoyer le formulaire"></td>
      </tr>
   </form></table>
<? } ?>
</BODY></HTML>[/code]
 
et voici la page "contactmail.php" pour l'envoi du message :
[code]<?php
session_start();
if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5) exit("Erreur !");
if($_SESSION['code'] != $_POST['verif']) exit("Erreur les valeurs sont différentes !");
$exp = $_POST['mail'];

$nom = stripslashes($_POST['nom']);
$mail = stripslashes($_POST['mail']);
$msg = stripslashes($_POST['msg']); 
$sexe = stripslashes($_POST['sexe']);
$pays = stripslashes($_POST['pays']);
$habitat = stripslashes($_POST['habitat']);
$newsletter = stripslashes($_POST['newsletter']); 
$envoi=mail("monmail@mail.com". $nom. $mail. $msg. $sexe. $pays. $habitat. $newsletter);
if($envoi)header('Location: merci.html');
else echo"L'envoi a échoué, merci de renouveler l'opération !";
session_unset();
session_destroy();
?>[/code]
=====
j'obtiens toujours l'erreur suivante :
Warning: mail() expects at least 3 parameters, 1 given in /var/www/monsite.fr/htdocs/contactmail.php on line 15
L'envoi a échoué, merci de renouveler l'opération !
============
quelqu'un voit il où est l'erreur ????
d'avance merci pour votre aide
--
Françoise
Hors ligneBrako Le 07/03/2010 à 21:17 Profil de Brako Configuration de Brako

Bonsoir,

Warning: mail() expects at least 3 parameters, 1 given in /var/www/monsite.fr/htdocs/contactmail.php on line 15

Cette erreur signifie que la fonction mail() prend au minimum 3 parametres.

or dans le code mail ne prend qu'un parametre :

$envoi=mail("monmail@mail.com". $nom. $mail. $msg. $sexe. $pays. $habitat. $newsletter);

utilisation de mail :

mail('destinataire@domain.fr''Sujet du mail', 'message du mail');

 

sinon essaye :

$envoi=mail("monmail@mail.com", 'test de mail', $nom. $mail. $msg. $sexe. $pays. $habitat. $newsletter);

 

bon courage

--
Ce qui donne une éventuelle matière à suspecter une quelconque propagande ...
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels