Formulaire mail en php

Petit nouveau ! | 4 Messages

18 mai 2007, 21:30

Bonsoir toute la communauté php france.

J'attaque directement avec mon petit problème :)

je suis sur un projet de site et dans mon projet j'ai une page donation, celle-ci comporte un formulaire avec trois champs de saisie le tout en html lorsque l'on clique sur le bouton envoyé une action se crée et appel la page .php. Cette dernière permet de récupérer les champs à savoir le mail de la personne le sujet ainsi que la description. puis de m'envoyer tout ça par mail :) jusque là c'est parfait

Mais en pratique ça ne marche pas je ne trouve pas l'erreur étant débutant dans le domaine je ne sais certainement pas trouver les petites erreurs que j'ai bien pu commettre.
je compte sur vous pour m'aider et résoudre ce magnifique formulaire!!

Voici dans un premier temps un bou de code .html de ma page

Code : Tout sélectionner

<form id="form1" name="monfrom" method="POST" action="envoie.php"> <table width="500" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><p align="right">Votre Mail:</p></td> <td><input type="text" name="email" size="25" maxlength="45" /></td> </tr> <tr> <td><p align="right">Mod&egrave;le de Macintosh : </p> </td> <td><input type="text" name="sujet" size="25" maxlength="45" /></td> </tr> <tr> <td colspan="2"> <div align="right"> <textarea cols="50" name="information" rows="12" wrap="off"></textarea> </div></td> </tr> <tr> <td><div align="right"><input type="reset" value="Rétablir" /></div></td> <td><input type="submit" value="Envoyer" /></td> </tr> </table> </form>
Puis enfin le code .php qui l'accompagne.
<?php
//Déclaration des variables
$mail =$_POST['email'];
$sujet = $_POST['sujet'];
$description = $_POST['information'];
//Fin de déclaration des variables

echo "ça marche ".$_POST['email']."&nbsp;".$_POST['sujet'];
if(!empty($mail) && !empty($sujet) && !empty($description) )
{
$description = htmlentities($information);
  $message = "$mail, $sujet vous contact via votre formulaire.\n \n message : \n $formdescription";
  if( mail('mon_email','$sujet','$mail,$message) ){
    echo 'les informations ont bien été envoyé!, pour. "&nbsp;".[url=http://superparasite.free.fr/Site_os/don.html]retourner à la page précédente[/url]';
}
  else{
    echo 'une erreur est survenu lors de l\'envoi du message';
  }
}
  else{
    echo 'merci de remplir les champs Mail, Sujet et les informations relatifes au sujet de votre dons</br> Cordialement ';
}

?>
l'erreur que j'ai est la suivante:
Quand je reçois le mail donc je n'ai ni le mail du donateur, ni le sujet ni les information :(
voila ce que je reçois :

De : —————
Objet : sujet
Date : 16 mai 2007 11:36:45 HAEC
À : mon adresse


$message


donc rien de se que j'ai remplit dans les champs de saisie n'a été reçu :(


Un grand merci pour votre aide
Cordialement :)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2007, 21:36

Regardes la coloration syntaxique tu verras de suite ton erreur.
 if( mail('mon_email','$sujet','$mail,$message) ){ 
De plus quand il s'agit de variables, ne mets pas de quotes. Dans ton cas, seul mon_email va être entouré de quotes.

Petit nouveau ! | 4 Messages

18 mai 2007, 23:57

les quotes dont tu parles c'est bien le = ' (apostrophe) il y en a pas aussi pour '$sujet' et celui qui est devant le $mail il doit y être?

merci :)

Mammouth du PHP | 991 Messages

19 mai 2007, 00:04

oui c'est bien le ( ' ) il delimite le texte est "tue" tous code php a l'interieur donc ton code donnerait :
if( mail('mon_email',$sujet,$mail,$message) ){
DevOps, Symfony4, Hoa

Petit nouveau ! | 4 Messages

19 mai 2007, 00:24

j'ai rectifié, testé j'attends le mail :)
y a-t-il une fonction pour brouiller le mail ?
À ce que les robot du net ne perçoivent pas mon adresse mail…… :)

edit:

Mail reçu c'est déjà bien mieux j'ai le mail de la personne qui envoie le sujet mais pas la partie information (description) le principal ^^ :)
un grand merci tout de même

Une question à quoi sert
$message = "$mail, $sujet vous contact via votre formulaire.\n \n message : \n $formdescription"; 
le $fromdescription pourquoi from?

Mammouth du PHP | 991 Messages

19 mai 2007, 00:52

ca c'est a toi de nous le dire , c'est une variable inialiser quelque part dans ton script , pourquoi "brouiller" ton adresse email car le php s'execute cote serveur et un robot est comme un utilisateur normal donc pour lui il est impossible de choper ton adresse tanqu'elle reste dans une variable et qu'elle n'est pas afficher par un echo ou par du javascript

@+ et bonne nuit

Thehawk
DevOps, Symfony4, Hoa

Petit nouveau ! | 4 Messages

19 mai 2007, 00:53

en tripotant un peu j'ai réussi à faire fonctionner le formulaire et l'envoie du mail avec toutes les information nécessaire pour traiter la demande :)
<?php
//Déclaration des variables
$mail =$_POST['email'];
$sujet = $_POST['sujet'];
$description = $_POST['information'];
//Fin de déclaration des variables

echo "ça marche ".$description."&nbsp;".$_POST['sujet'];
if(!empty($mail) && !empty($sujet) && !empty($description) )
{
$description = htmlentities($information);//À quoi sert cette ligne?
  if( mail('mon_mail',$sujet,$mail,$_POST['information']) ){
    echo 'les informations ont bien été envoyé!, pour. "&nbsp;".[url=http://superparasite.free.fr/Site_os/don.html]retourner à la page précédente[/url]';
}
  else{
    echo 'une erreur est survenu lors de l\'envoi du message';
  }
}
  else{
    echo 'merci de remplir les champs Mail, Sujet et les informations relatifes au sujet de votre dons</br> Cordialement ';
}

?>
Que me conseillez-vous pour améliorer mon script?

Cordialement

Mammouth du PHP | 991 Messages

19 mai 2007, 01:01

pour repondre a ta question :
$description = htmlentities($information);//À quoi sert cette ligne?
=> Ben vu que tu n'a apparement pas de variable $information elle est inutile , le htmlentites perme de "tuer" tous code html présent dans la page , et d'afficher le code htl au leiu de l'executer ^^

Plus de précison ici : http://fr.php.net/htmlentities

Sinon pour ton optimisation je ne trouve pas grand chose a redire

@+ thehawk
DevOps, Symfony4, Hoa