Problème avec formulaire php - HELP!

Problème avec formulaire php - HELP! - PHP - Programmation

Marsh Posté le 19-10-2012 à 14:42:38    

Bonjour à tous,
Je me lance dans la création de mon premier site internet...
J'utilise Dreamweaver.
Je rencontre des difficultés dans la création d'un formulaire de contact.
En effet, je souhaite transmettre par e-mail, les données saisies par l'utilisateur via un script php.
 
J'ai réalisé celui-ci mais je ne reçois pas les infos par mail... et ne trouve pas le bug... je fais mes tests via un serveur free-h.org qui prend en charge le PHP...
 
Est-ce que vous voyez ce qui ne va pas... ?
 
Je suis débutante, donc le code est loin d'être optimisé et "propre"...
 
Merci par avance...
 
Voici mon code php :
<?php
 
$name = $_POST['name'];
$prenom = $_POST['prenom'];
$visitor_tel = $_POST['tel'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
 
 
$email_from = 'lmenand@hotmail.com';
$email_subject = "Formulaire de contact";
$email_body = "Vous avez reçu un nouveau message de Mr ou Mme $name. \n".
     "Voici le message : \n $message".
   
$to = "monadressemail@hotmail.com";
$headers = "From: $email_from \r\n";
 
 
/*$headers .="Reply-To: $visitor_email \r\n";*/
 
@mail($to,$email_subject,$email_body,$headers);
 
header('Location: merci.html');
 
 
?>  
 
 
Code html du formulaire (pour la saisie des données) :
   
    <form id="form1" name="form1" action="email_form2.php" method="post"ENCTYPE="text/plain" >
      <table width="94%" height="440" border="0" align="center">
       
       
        <tr>
          <td width="19%">Nom*</td>
          <td width="40%"><span id="sprytextfield1">
            <label for="name"></label>
            <input type="text" name="name" id="name" size="30" tabindex="1"/>
 
            <span class="textfieldRequiredMsg"><span style="font-size: 60%;"><br />
 
Veuillez indiquer votre nom</span></span></span></span> <br /></td>
          <td width="41%" rowspan="6" align="center" valign="top"; text-align: center;">
          <dl>
          <dt><span style="margin-top: 0px;">
       
          </td>
         
          <td>Prénom</td>
          <td><input name="prenom" type="text" id="prenom" size="30" tabindex="2"/></td>
        </tr>
         
        <tr>
         
          <td>Téléphone*</td>
          <td><span id="sprytextfield3" onfocus="MM_validateForm('name','','R','tel','','RisNum','email','','RisEmail','message','','R');return document.MM_returnValue">
          <input name="tel" type="text" id="tel" size="30" tabindex="3"/>
          <span class="textfieldRequiredMsg">Une valeur est requise.</span><span class="textfieldInvalidFormatMsg">Format non valide.</span></span><span class="textfieldRequiredMsg">
  <span style="font-size: 60%;">Précisez votre numéro de téléphone</span></span><span class="textfieldInvalidFormatMsg"><span style="font-size: 60%;">Format non valide</span></span></td>
        </tr>
         
         
         
        <tr>
          <td>e-mail*</td>
          <td><span id="sprytextfield2">
          <input name="email" type="text" id="email" size="30" tabindex="4"/>
           
          <span class="textfieldRequiredMsg">
           
          <span style="font-size: 60%;">Précisez votre e-mail</span></span><span class="textfieldInvalidFormatMsg"><span style="font-size: 60%;">Format non valide</span></span></span></td>
        </tr>
        <tr>
          <td height="51">Votre message*</td>
          <td><span id="sprytextarea1">
            <textarea name="message" cols="40" rows="10" id="message" tabindex="5"></textarea>
          <span class="textareaRequiredMsg"><span style="color: #96F; font-size: 60%;">Rédigez votre message</span></span></span></td>
        </tr>
        <tr>
          <td height="54"><span style="vertical-align: top; text-align: center; font-size: 50%;">*: champs obligatoires</span></td>
          <td><input name="button" type="submit" id="button" onclick="MM_validateForm('name','','R','tel','','R','email','','RisEmail','message','','R');return document.MM_returnValue" value="Envoyer" tabindex="6"/></td>
        </tr>
      </table>
    </form>

Reply

Marsh Posté le 19-10-2012 à 14:42:38   

Reply

Marsh Posté le 21-10-2012 à 11:27:32    

Salut
Il y aura un petit souci de sécurité à gérer sur ton formulaire, mais on verra ça après.

 

Tout d'abord, retire l'@ devant la fonction mail : c'est une mauvaise idée en test de vouloir masquer les erreurs.

 

Option 1) tu testes tel quel et c'est justement la fonction mail qui renvoie une erreur
Bin fait voir laquelle !  :spamafote:

 

Option 2) mail ne renvoie pas d'erreur
Alors déjà il faut tester tes variables, faire un echo $nom puis echo $message, etc. Afin de voir si tout est bien récupéré.

 

Tu n'as rien dans les spams, et ton hébergeur n'a pas de restriction sur cette fonction ?

 

A toi la suite...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 21-10-2012 à 11:28:58    

Salut
Il y aura un petit souci de sécurité à gérer sur ton formulaire, mais on verra ça après.

 

Tout d'abord, retire l'@ devant la fonction mail : c'est une mauvaise idée en test de vouloir masquer les erreurs.

 

Option 1) tu testes tel quel et c'est justement la fonction mail qui renvoie une erreur
Bin fait voir laquelle !  :spamafote:

 

Option 2) mail ne renvoie pas d'erreur
Alors déjà il faut tester tes variables, faire un echo $nom puis echo $message, etc. Afin de voir si tout est bien récupéré.

 

Tu n'as rien dans les spams, et ton hébergeur n'a pas de restriction sur cette fonction ?

 

A toi la suite...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 21-10-2012 à 11:56:51    

Juste après <?php
 
ecris ces deux lignes :
 
ini_set('error_reporting', 'E_ALL | E_STRICT');
ini_set('display_errors', true);
 
Pour être certaine d'afficher les erreurs


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 21-10-2012 à 12:38:54    

Bonjour et merci pour ton aide !
Je n'ai en effet pas de message d'erreur. Je ne recevais tout simplement pas d'email comprenant les informations saisies par l'utilisateur...
J'ai vérifié, mon hébergeur gère bien le php et la fonction mail().
 
 
J'ai, avant de recevoir ta réponse, refait mon code php (voir ci dessous), je n'ai pas changé la partie html de saisie du formualire:  
<?php
$to= "xxxxx@yyy.com";
$subject= "Formulaire de contact";
$message= "NOM:       " .$_POST['name'] . "\r\n" .
"PRENOM:    " .$_POST['prenom'] . "\r\n" .
"TELEPHONE: " .$_POST['tel'] . "\r\n" .
"E-mail:    " .$_POST['email'] . "\r\n" .
"MESSAGE:   " .$_POST['message'];
$from=$_POST['email'];
$headers="De: $email"."\r\n";
$headers.="Bcc: info_www@zzzzzz.net"."\r\n";
mail($to,$subject,$message,$headers);
?>
 
Je reçois maintenant un mail mais les variables 'name', 'prenom', etc ne sont pas renseignées...
Je vais essayer de tester les variables avec la fonction echo comme suggéré. Je te tiens au courant... je dois faire un peu de recherche car jamais utilisé cette fonction...
 
A suivre...
 

Reply

Marsh Posté le 21-10-2012 à 12:45:55    

CyberDenix a écrit :

Juste après <?php
 
ecris ces deux lignes :
 
ini_set('error_reporting', 'E_ALL | E_STRICT');
ini_set('display_errors', true);
 
Pour être certaine d'afficher les erreurs


 
Bonjour et merci pour votre aide !
J'ai rajouté à mon nouveau code php les 2 lignes ci dessus ini_set etc... je n'ai pas de message d'erreur.
J'ai maintenant "juste" un pbl de variables non transmises via mon script php...
 
A suivre,
je cherche les raisons...

Reply

Marsh Posté le 21-10-2012 à 14:25:06    

NewsletTux a écrit :

Salut
Il y aura un petit souci de sécurité à gérer sur ton formulaire, mais on verra ça après.
 
Tout d'abord, retire l'@ devant la fonction mail : c'est une mauvaise idée en test de vouloir masquer les erreurs.
 
Option 1) tu testes tel quel et c'est justement la fonction mail qui renvoie une erreur
Bin fait voir laquelle !  :spamafote:  
 
Option 2) mail ne renvoie pas d'erreur
Alors déjà il faut tester tes variables, faire un echo $nom puis echo $message, etc. Afin de voir si tout est bien récupéré.
 
Tu n'as rien dans les spams, et ton hébergeur n'a pas de restriction sur cette fonction ?
 
A toi la suite...


 
Re-bonjour,
 
J'ai donc fait un echo de mes variables (sur mon nouveau code php : celui qui m'envoie un mail mais sans le résultat des variables) : mes variables ne sont pas récupérées... :??:

Reply

Marsh Posté le 21-10-2012 à 15:32:52    

Faut voir si ton formulaire est en get ou en post :
 
<form ... method=post>
 
Tu dois utiliset $_POST
 
 
<form ... method=get>
 
tu dois utiliser $_GET
 
 
 
Sinon tu peux utiliser $_REQUEST, qui gère les deux.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 21-10-2012 à 15:53:42    

CyberDenix a écrit :

Faut voir si ton formulaire est en get ou en post :
 
<form ... method=post>
 
Tu dois utiliset $_POST
 
 
<form ... method=get>
 
tu dois utiliser $_GET
 
 
 
Sinon tu peux utiliser $_REQUEST, qui gère les deux.


 
Je suis en POST. Suis en train d'épurer mon formulaire pour repartir d'un formulaire basic.  
en effet, je viens de refaire un essai, et comme par hasard, seul le champ nom obligatoire (prénom) est transmis... Une fois que j'aurai des variables transmises, je remettrai ensuite des validations de format (mail, tel, etc...) on dirait que le pbl est à ce niveau... j'ai dû faire des erreurs de syntaxes qui polluent le "truc"... te tiens informé...

Reply

Marsh Posté le 21-10-2012 à 16:11:53    

CyberDenix a écrit :

Faut voir si ton formulaire est en get ou en post :
 
<form ... method=post>
 
Tu dois utiliset $_POST
 
 
<form ... method=get>
 
tu dois utiliser $_GET
 
 
 
Sinon tu peux utiliser $_REQUEST, qui gère les deux.


 
On dirait qu'avec ce formulaire "épuré" et "basic" le problème de transmission des variables est résolu :) . Je vais petit à petit rajouter mes conditions (champs obligatoires et validation de format) en espérant que le pbl ne réapparaisse pas !
 
Dans tous les cas, je te remercie pour ton aide ainsi que NewsletTux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed