Problème formulaire PHP. Données non envoyées

Résolu/Fermé
MananaMo Messages postés 9 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 22 janvier 2011 - Modifié par MananaMo le 18/01/2011 à 21:20
MananaMo Messages postés 9 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 22 janvier 2011 - 22 janv. 2011 à 18:25
Bonjour,

Voilà mon problème. J'ai rédigé un script pour que, lorsque l'utilisateur clique sur Envoyer, les données du formulaire soient transmises vers une adresse e-mail ( pas de base de données pour le moment).

Mais le problème c'est que lorsque les données sont envoyées, elles n'arrivent pas à destination et aucune erreur ne m'est renvoyée.

Voici le code utilisé :

<?php       
 require ('entete.php');       
        
 ?>       
          
 <DIV id="principal">       
           
            
        <?php       

  //paramètres       
                
    $destinataire = 'XXXXXX@gmail.com';       
    $copie = 'non'; //à l'expéditeur du message       
    $message_envoye = "Votre message nous est bien parvenu !";       
    $message_non_envoye = "L'envoi de l'e-mail a échoué, veuillez réessayer SVP.";       
    $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\">envoyer le formulaire</a>.";       
    $message_formulaire_invalide = "Vérifiez que tous les champs sont bien remplis et que l'email est sans erreur.";       
             
  //fonctions spécifiques       
              
  function Rec($text)       
   {       
   $text = trim($text); // delete white spaces after & before text       
    if (1 === get_magic_quotes_gpc())       
     {       
     $stripslashes = create_function('$txt', 'return stripslashes($txt);');       
     }       
        else       
     {       
     $stripslashes = create_function('$txt', 'return $txt;');       
    }       

  // magic quotes ?       
    $text = $stripslashes($text);       
    $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well       
    $text = nl2br($text);       
    return $text;       
     };       
              
  function IsEmail($email)       
   {       
   $pattern = "~^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$~";       
   return (preg_match($pattern,$email)) ? true : false;       
   };       
             
          // on teste si le formulaire a été soumis       
    if (!isset($_GET['envoyer']))       
     {       
      // formulaire non envoyé       
       echo '<p>'.$message_erreur_formulaire.'</p>'."\n";       
     }       
   else       
     {       
               
               
     //tests et récupération de la QS       
              
$nom  = (isset($_GET['nom']))              ? Rec($_GET['nom'])   : '';       
$prenom  = (isset($_GET['prenom']))      ? Rec($_GET['prenom'])  : '';       
$pseudo  = (isset($_GET['pseudo']))     ? Rec($_GET['pseudo'])  : '';       
$email  = (isset($_GET['e-mail']))            ? Rec($_GET['e-mail'])  : '';       
$age  = (isset($_GET['age']))                 ? Rec($_GET['age'])   : '';       
$objet  = (isset($_GET['objet']))             ? Rec($_GET['objet'])  : '';       
$message = (isset($_GET['message'])) ? Rec($_GET['message'])  : '';       
               
               
           //vérification de l'e-mail et des variables       
               
             $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré       

     if (($nom != '') && ($prenom != '') && ($email != '') && ($age != '') && ($objet != '') && ($message != ''))       
    {       
    // les 7 variables sont non vides, on génère puis envoie l' e-mail       
          $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";       

                                // envoyer une copie au visiteur ?       
           if ($copie == 'oui')       
       {       
       $cible = $destinataire.','.$email;       
       }       
       else       
       {       
       $cible = $destinataire;       
       };       

 // Remplacement de certains caractères spéciaux       
$message = str_replace("'","'",$message);       
$message = str_replace("'","'",$message);       
$message = str_replace(""",'"',$message);       
$message = str_replace('<br>','',$message);       
$message = str_replace('<br />','',$message);       
$message = str_replace("<","<",$message);       
$message = str_replace(">",">",$message);       
$message = str_replace("&","&",$message);       
            
    // Envoi du mail       
     if (mail($cible, $objet,'données envoyées par le destinataire : nom = "' . $nom . '" ; prenom = "' . $prenom . '" ; pseudo = "' . $pseudo . '" ; e-mail = "' . $email . '" ; age = "' . $age .'" ; objet = "' . $objet . '" ; message : ' . $message, $headers))       
      {       
      echo '<p>'.$message_envoye.'</p>'."\n";       
      }       
      else       
      {       
                 echo '<p>'.$message_non_envoye.'</p>'."\n";       
      };       
     }       
      else       
         {       
      // une des variables est vide       
      echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";       
       };       
      }; // fin du if (!isset($_POST['envoi']))       


        
     ?>       

             
      </DIV>       
                 
    <?php       
 require ('pied_de_page.php');       
        
 ?>       


Oui c'est assez long , désolée, mais peut-être y'a t-il une erreur quelque part? En tout cas, merci si quelqu'un sait m'aider.


A voir également:

4 réponses

xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
19 janv. 2011 à 03:49
as tu verifié avec echo ou mail, que tout est bon? je veux dire juste avant la procession de la function mail?
0
MananaMo Messages postés 9 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 22 janvier 2011 2
Modifié par MananaMo le 19/01/2011 à 08:38
Oui, ça fonctionne. En fait, les données sont correctement transmises en localhost, mais pour ce qui est de l'envoi à travers le serveur, aucune réponse de ce côté. J'ai essayé de changer l'adresse de destination, mais il n'y a pas d'évolution. Serait-ce une erreur au niveau du serveur?
0
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
19 janv. 2011 à 11:31
faut eventuellement voir si le php du serveur supporte la foncction mail
<?phpinfo();?>
0
MananaMo Messages postés 9 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 22 janvier 2011 2
20 janv. 2011 à 09:14
Le serveur supporte bien la fonction mail. J'avoue que je ne comprends pas ce qui peut bloquer autrement, c'en est désespérant.
0
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
20 janv. 2011 à 15:32
est ce que une de tes echo vient?
 echo '<p>'.$message_envoye.'</p>'."\n";       
     //ou 
                 echo '<p>'.$message_non_envoye.'</p>'."\n"; 
0
MananaMo Messages postés 9 Date d'inscription dimanche 14 novembre 2010 Statut Membre Dernière intervention 22 janvier 2011 2
22 janv. 2011 à 18:25
Alors, oui, les echo répondent, en local. Mais voilà que j'ai trouvé la solution. Finalement, j'ai eu une fausse information et c'est bien le serveur mail qui fait défaut de ce point là. En effet, pour éviter les spams, la fonction mail n'a pas été activée. Autant dire que je suis déçue, mais bon. Merci en tout cas pour avoir essayé de m'apporter ton aide ;)
0