Email vide lors de la réception

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 13:20

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

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 13:24

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 ?

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 13:32

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+

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 13:35

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:

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 13:50

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"; 
} 
?>
Modifié en dernier par Temjeh le 27 oct. 2008, 13:26, modifié 1 fois.

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 13:56

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 !

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 14:02

Merci

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

Est bon

A+

Temjeh

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 14:06

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.

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 14:13

Je ne suis pas trop certain de la marche à suivre!

Temjeh

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 14:16

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:

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 14:21

<?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]
Modifié en dernier par Temjeh le 27 oct. 2008, 13:27, modifié 1 fois.

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 14:29

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:

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 14:33

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

lux
Eléphant du PHP | 372 Messages

26 oct. 2008, 14:44

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";  

Eléphanteau du PHP | 14 Messages

26 oct. 2008, 14:49

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
Modifié en dernier par Temjeh le 27 oct. 2008, 13:27, modifié 2 fois.