Page 1 sur 1

Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 14:05
par orodreth68
Bonjour à tous,

Voilà je développe actuellement un site web et j'ai besoin d'un formulaire de contact qui sera ensuite envoyé par mail à une adresse précise après authentification SMTP grace à la class PHPmailer.

J'ai tout codé, l'envoi de mail fonctionne, mais par contre je ne reçois pas mes données dans le mail. Le mail est vide.

Voici le code de mon formulaire :
<form method="post" action="testMail.php" onSubmit="return valideForm(this)">
<input type="hidden"  name="subject"  value="formail">

<table width="310" align="left">
<tr>
  <td><span class="Style8">Prénom</span></td>
  <td><input name="prenom" type="text" id="prenom" size="34" /></td>
</tr>
<tr>
  <td width="100" class="Style8">Nom</td>
    <td width="233"><input name="nom" type="text" id="nom" size="34"/></td>
</tr>
<tr>
  <td class="Style1 Style6 Style9">Téléphone*</td>
  <td><input name="telephone" type="text" id="telephone" size="34" /></td>
</tr>
<tr>
  <td class="Style8"> Email*</td>
    <td><input name="email" type="text" size="34"/></td>
</tr>
<tr>
  <td class="Style1 Style6 Style9">Société</td>
  <td><input name="societe" type="text" id="societe" size="34"/></td>
</tr>

<tr>
  <td class="Style8">Objet</td>
    <td><input name="region" type="text" id="region" size="34"></td>
</tr>

<tr>
  <td><span class="Style8">Message<br />      
      <br />      
      <br />      
      <br />      
      <br />      
      <br />  
      </span></td>
  <td><span class="Style12 Style1 Style3">
    <textarea name="comments" cols="27" rows="6"></textarea>
  </span></td>
</tr>
<tr>
  <td><span class="Style12"><br>
  </span></td>
  <td><input type="submit" name="Submit" value="Envoyer"></td>
</tr>
</table>
</form>
Et voici le PHP qui est appelé lors de l'nvoi du formulaire. C'est là qu'il faut lui demander de récupérer les valeurs et de le mettre dans $body, mais je ne vois pas comment faire. Pouvez-vous m'aider ? Merci d'avance.
<? 
include_once("./Class/PHPMailer_v5.1/class.phpmailer.php");                
//Envoi de l'email de validation d'inscription
$mail = new phpmailer();
$mail->Host         = 'nom hote smtp';
$mail->Mailer 		= "smtp";
$mail->Port 		= 25;
//   * Options are "", "ssl" or "tls"
$mail->SMTPSecure   = '';
//Option True or False
$mail->SMTPAuth 	= true;
$mail->Username     = 'no-reply@???.com';
$mail->Password     = 'mot de passe';
$mail->SMTPDebug 	= false;


$mail->From     	= "no-reply@???.com";

$mail->FromName = "No-Reply address";

$mail->AddAddress("contact@????.fr","Mon Nom");            

$mail->AddReplyTo("no-reply@???.com","No-Reply");

$mail->Host     = "nom hote smtp";
$mail->Subject  = "Test Mail";//"Invitation ";
//$mail->CharSet  = acde_smtp_encoding;
$mail->ContentType = "text/html";
$client_email = "contact@????.fr";

$body="";

// Plain text body (for mail clients that cannot read HTML)
$text_body = strip_tags($contents);

$mail->Body    = $body;
$mail->AltBody = $text_body;
$mail->AddAddress($client_email);
//$mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");

if(!$mail->Send())
      {echo "Votre mail n'a pas été envoyé";}
else {              echo "Votre mail a été envoyé";}

Header("Location: URL");

// Clear all addresses and attachments for next loop
$mail->ClearAddresses();
$mail->ClearAttachments();
return true;

?>

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 15:02
par macgawel
Exemple - basique et non sécurisé (toujours sécuriser les données reçues par formulaire) - avec le prénom :
$prenom = $_POST('prenom'];
$body = "Bonjour $prenom";

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 15:05
par misterflo
Salut,
Il faut bien vérifier que les champs soient remplies, il faut aussi les protéger avec un htmlspecialchars ou htmlentities.
Ensuite tu peux remplir ta variable $body comme tu le veux.

Une explication simple :
http://www.phpfrance.com/tutoriaux/inde ... re-de-base

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 15:10
par orodreth
Merci beaucoup pour cette réponse rapide, malheureusement dès que je défini chaque variable pour chacun des champs et que je lui demande de les récupérer dans le body, au moment du submit il me dit qu'il ne trouve pas le fichier php (erreur 404). Dès que j'enlève les variables, il trouve bien le fichier et l'envoi (mais à vide)...

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 15:12
par macgawel
Merci beaucoup pour cette réponse rapide, malheureusement dès que je défini chaque variable pour chacun des champs et que je lui demande de les récupérer dans le body, au moment du submit il me dit qu'il ne trouve pas le fichier php (erreur 404). Dès que j'enlève les variables, il trouve bien le fichier et l'envoi (mais à vide)...
- Il ne trouve pas quel fichier ?
- Tu peux mettre les codes que tu as testé ?

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 15:28
par orodreth
Voilà l'erreur qu'il me met, ce n'est pas 404, mais 500 en fait :

Image

Quant au code PHP avec mes variables, voilà ce que ca donne.
<? 
include_once("./Class/PHPMailer_v5.1/class.phpmailer.php"); 

$date = utf8_encode(date("d/m/Y")); // On détecte la date du jour
$nom=stripslashes(htmlentities($_POST["nom"]));
$prenom=stripslashes(htmlentities($_POST["prenom"]));
$societe = htmlspecialchars($_POST['societe']);
$telephone = htmlspecialchars($_POST['tel']);
$email=$_POST["mail"];
$objet = htmlspecialchars($_POST['objet']);
$message = htmlspecialchars($_POST['message']);
              
//Envoi de l'email de validation d'inscription
$mail = new phpmailer();
$mail->Host         = 'Smtp.???.com';
$mail->Mailer 		= "smtp";
$mail->Port 		= 25;
//   * Options are "", "ssl" or "tls"
$mail->SMTPSecure   = '';
//Option True or False
$mail->SMTPAuth 	= true;
$mail->Username     = 'no-reply@???.com';
$mail->Password     = '???';
$mail->SMTPDebug 	= false;


$mail->From     	= "no-reply@???.com";

$mail->FromName = "No-Reply address";

$mail->AddAddress("contact@???.fr","???");            

$mail->AddReplyTo("no-reply@???.com","No-Reply");

$mail->Host     = "Smtp.???.com";
$mail->Subject  = "Test Mail";//"Invitation ";
//$mail->CharSet  = acde_smtp_encoding;
$mail->ContentType = "text/html";
$client_email = "contact@???.fr";

$body="$date;$nom;$prenom;$societe;$tel;$mail;$objet;$message;\n";

// Plain text body (for mail clients that cannot read HTML)
$text_body = strip_tags($contents);

$mail->Body    = $body;
$mail->AltBody = $text_body;
$mail->AddAddress($client_email);
//$mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");

if(!$mail->Send())
      {echo "Votre mail n'a pas été envoyé";}
else {              echo "Votre mail a été envoyé";}

Header("Location: http://www.???.fr");

// Clear all addresses and attachments for next loop
$mail->ClearAddresses();
$mail->ClearAttachments();
return true;

?>
Pour tout ce qui est sécurité et vérifications des champs, ce n'est pas un souci je sais faire, c'est juste ça qui me bloque.

Re: Problème de récupération des données d'un formulaire

Posté : 10 mars 2011, 18:41
par moogli
yop,

erreur 500 ça ressemble à un .htaccess foireux ? si tu en a un renomme le pour voir si c'est ça ;)
si tu est sur ta machine regarde les logs du serveur web (parfois les hébergeurs t'en fournissent).
@+