Page 1 sur 2

Email vide lors de la réception

Posté : 26 oct. 2008, 13:20
par Temjeh
Bonjour et merci à tous

Je cherche depuis des jours sans succès.
J'ai ce form fait sur le net et c'est dans le PHP qu'il y a bug car les mail que je recois est vide:

Code : Tout sélectionner

<!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>Untitled Form</title> <link rel="stylesheet" type="text/css" href="view.css" media="all" /> <script type="text/javascript" src="view.js"></script> <meta name="generator" / content="namo webeditor"> </head> <body id="main_body"> <img id="top" src="top.png" alt="" /> <div id="form_container"> <h1><a>Untitled Form</a></h1> <form id="form_99412" class="appnitro" method="post" action="envoi"> <div class="form_description"> <h2>Untitled Form</h2> <p>This is your form description. Click here to edit.</p> </div> <ul> <li id="li_1"> <label class="description" for="element_1"></>Text </label> </> <div> <input id="element_1" name="element_1" class="element text medium" type="text" maxlength="255" value=""/> </div> </li> <li id="li_2"> <label class="description" for="element_2"></>Paragraph </label> </> <div> <textarea id="element_2" name="element_2" class="element textarea medium"></textarea> </div> </li> <li id="li_4"> <label class="description" for="element_4"></>Drop Down </label> </> <div> <select class="element select medium" id="element_4" name="element_4"> <option value="" selected="selected"></option> <option value="1">First option</option> <option value="2">Second option</option> <option value="3">Third option</option> </select> </div> </li> <li id="li_3"> <label class="description" for="element_3"></>Email </label> </> <div> <input id="element_3" name="element_3" class="element text medium" type="text" maxlength="255" value=""/> </div> </li> <li class="buttons"> <input type="hidden" name="form_id" value="99412" /> <input id="saveform" class="button_text" type="submit" name="submit" value="submit" /> </li> </ul> </form> <div id="footer"> Generated by <a href="http://www.phpform.org">pForm</a> </div> </div> <img id="bottom" src="bottom.png" alt="" /> </body> </html>
Le PHP d'un autre form qui fonctionne en partie:
<?php 
$element_1=$HTTP_POST_VARS['element_1']; 
$element_2=$HTTP_POST_VARS['element_2']; 
$element_3=$HTTP_POST_VARS['element_3']; 
$element_4=$HTTP_POST_VARS['element_4']; 
 
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
 
//////ici on détermine le mail en format texte 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 
 
$subject="$objet"; 
$destinataire="[email protected]"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a été envoyé"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?> 

Le prob est que le email est envoyé vide!

Prob de capture de champs surement:

$element_1=$HTTP_POST_VARS['element_1'];
$element_2=$HTTP_POST_VARS['element_2'];
$element_3=$HTTP_POST_VARS['element_3'];
$element_4=$HTTP_POST_VARS['element_4'];

Merci beaucoup beaucoup de me guider

Temjeh

Posté : 26 oct. 2008, 13:24
par lux
Depuis php 4.10, d'après le manuel :

http://fr2.php.net/manual/fr/reserved.v ... s.post.php
4.1.0 Introduction de $_POST, rendant obsolète $HTTP_POST_VARS
Essaye avec $_POST ?

Posté : 26 oct. 2008, 13:32
par Temjeh
Merci mais je suis vraiment nul en prog html ou php

Le lien me dit que la méthode d'écriture est un peu dépassé.

Quelle est la nouvelle?

Merci de me l'écrire

A+

Posté : 26 oct. 2008, 13:35
par lux
Tout simplement comme ça :
$element_1=$_POST['element_1'];  
$element_2=$_POST['element_2'];  
$element_3=$_POST['element_3'];  
$element_4=$_POST['element_4'];
Tu peux faire un echo de $element_1 pour voir si il est bien rempli, pour débugguer ton script. :wink:

Posté : 26 oct. 2008, 13:50
par Temjeh
Merci encore

Le form est ici:

http://www.pubetplus.com/test/form.html

Fait ici

http://www.phpform.org/


Pourtant le mail reste encore vide alors qu'il me dit qu'il est bien envoyé?

Le bug serait-il dans le code html?

Nouveau PHP:
<?php 
$element_1=$_POST['element_1'];  
$element_2=$_POST['element_2'];  
$element_3=$_POST['element_3'];  
$element_4=$_POST['element_4'];  
 
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 
 
//////ici on détermine le mail en format texte 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
 
////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 
 
$subject="$objet"; 
$destinataire="[email protected]"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a été envoyé"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?>

Posté : 26 oct. 2008, 13:56
par lux
Comme je le disais, essaye de faire un echo pour voir le contenu du $_POST et mets le reste du script en commentaires. C'est la méthode à utiliser quand on cherche un bug.
<?php  
$element_1=$_POST['element_1'];   
$element_2=$_POST['element_2'];   
$element_3=$_POST['element_3'];   
$element_4=$_POST['element_4'];   

echo $element_1;
/*
/////voici la version Mine  
$headers = "MIME-Version: 1.0\r\n";  
  
//////ici on détermine le mail en format texte  
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";  
  
////ici on détermine l'expediteur et l'adresse de réponse  
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";  
  
$subject="$objet";  
$destinataire="[email protected]";  
$body="$message";  
if (mail($destinataire,$subject,$body,$headers)) {  
echo "Votre mail a été envoyé";  
} else {  
echo "Une erreur s'est produite";  
}  */
?>
EDIT : dans ton html : dans la balise <form>, t'as ça : action="envoi"

Faut plutot mettre le chemin du fichier php, genre action="fichier.php", fichier ou y a ton traitement dedans !

Posté : 26 oct. 2008, 14:02
par Temjeh
Merci

Avec ton code il me met en page echo le mot que je tappe dans le premier champs

Est bon

A+

Temjeh

Posté : 26 oct. 2008, 14:06
par lux
Bon et maintenant, tu envoyes :
$subject="$objet"; 
dans ton mail ... alors que ce devrait être $element_1 etc......

Donc enlève la mise en commentaires, et corrige le $subject.

Posté : 26 oct. 2008, 14:13
par Temjeh
Je ne suis pas trop certain de la marche à suivre!

Temjeh

Posté : 26 oct. 2008, 14:16
par lux
1° tu dois enlever les /* */ que j'ai ajouté, ils sont provisoires, c'était juste pour le test
2° de meme pour l'echo que j'ai ajouté, tu le vires
3° Mets
$subject=$element_1;
pour voir et teste le script. Normalement si tout va bien il devrait t'envoyer un mail avec comme sujet ce que tu avais mis dans ton 1er champ. :wink:

Posté : 26 oct. 2008, 14:21
par Temjeh
<?php  
$element_1=$_POST['element_1'];   
$element_2=$_POST['element_2'];   
$element_3=$_POST['element_3'];   
$element_4=$_POST['element_4'];   

$subject=$element_1; 

/////voici la version Mine  
$headers = "MIME-Version: 1.0\r\n";  
  
//////ici on détermine le mail en format texte  
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";  
  
////ici on détermine l'expediteur et l'adresse de réponse  
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";  
  
$subject="$objet";  
$destinataire="[email protected]";  
$body="$message";  
if (mail($destinataire,$subject,$body,$headers)) {  
echo "Votre mail a été envoyé";  
} else {  
echo "Une erreur s'est produite";  
}  
?> 
Dommage toujour vide mais recu

Temjeh[/php]

Posté : 26 oct. 2008, 14:29
par lux
Si tu laisses $subject="$objet"; dans ton code, il va écraser la valeur de $subject, et la remplacer par ... rien. Donc enlève cette ligne aussi ($subject="$objet"; ) :wink:

Posté : 26 oct. 2008, 14:33
par Temjeh
WOW

Merci beaucoup on y est presque c'est très bon

Il m'envoi juste le premier champ!

J'ajoute des choses surement?

A+

Temjeh

Posté : 26 oct. 2008, 14:44
par lux
Bon le problème, c'est que subject, ce sera le titre du mail non ?
Et $body contient le mail lui même.

Donc mets plutot un truc comme ça :
$subject='Titre du mail';
$body = $element_1.'<br />'.$element_2.'<br />'.$element_3.'<br />'.$element_4.'<br />';
Ce formattage permets d'avoir un retour à la ligne après chaque élément dans le mail.

Faudra aussi corriger cette ligne après, quand ça marchera ... pasque la syntaxe est pas correcte :
////ici on détermine l'expediteur et l'adresse de réponse   
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";  

Posté : 26 oct. 2008, 14:49
par Temjeh
Je recois le mail avec Titre du mail mais avec rien d'autre:
<?php  
$element_1=$_POST['element_1'];   
$element_2=$_POST['element_2'];   
$element_3=$_POST['element_3'];   
$element_4=$_POST['element_4'];   

$subject='Titre du mail';
$body = $element_1.'<br />'.$element_2.'<br />'.$element_3.'<br />'.$element_4.'<br />'; 

/////voici la version Mine  
$headers = "MIME-Version: 1.0\r\n";  
  
//////ici on détermine le mail en format texte  
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";  
  
////ici on détermine l'expediteur et l'adresse de réponse   
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";  
  

$destinataire="[email protected]";  
$body="$message";  
if (mail($destinataire,$subject,$body,$headers)) {  
echo "Votre mail a été envoyé";  
} else {  
echo "Une erreur s'est produite";  
}  
?> 

Ptêtre avec le sujet:$subject=$element_1; car comme tu le dit le 1er champs de texte est le titre du mail
Merci

Temjeh