Reprendre donné du formulaire pour mail PHP

Résolu/Fermé
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 - 2 mai 2009 à 17:06
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 - 4 mai 2009 à 17:18
Bonjour,

Merci de l'aide et les conseils que vous pourrez m'apporter.

J'ai fais un formulaire en html avec une vérification des données entrée avec du Javascript donc jusque là tous marche impeccable.

Mais ensuite j'ai un code PHP qui lui m'envérais les données du formulaire en HTML ou text.
je comprend pas comment recevoir un mail avec par exemple avec les données du formulaire .

mon formulaire comprend des choix en bouton radio des choix en liste déroulante et un text area.

en fait je saisi pas comment lui dire de prendre les donné pour les mettre dans le mail.

J'utilise dans le formulaire la methode post.

donc dois-je dans mon PHPpour par exemple mettre dans le texte du mail toute les infos du formulaire :

$texte.="$Message $Nom $Prenom etc...";



Merci pour les explication que vous me donneréer.

Amicalement.
A voir également:

13 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
3 mai 2009 à 16:38
Mais justement comment je dit dans PHP dans le mail écris moi sur le corp du message les éponse du formulaire.
et bien je te l'ai déjà montré : tu as la fonction mail() dont le troisième argument est le corps du message, tu as juste à passer les bons paramètres pour réaliser ce que tu veux.

Encore un exemple, mais plus concret : je veux que le formulaire m'envoie le mail comme suit :
Expéditeur :
Guillaume MARTIN <gmartin@example.org>
Sujet :
Réponse de gmartin@example.org
Corps du mail :
Nom : MARTIN
Prénom : Guillaume
Profession : Photographe
Message : Rien à dire ....


Je vais faire :
$corps_mail="Nom : $nom \n Prénom : $prenom \n Profession : $profession \n Message : $message.";
$sujet_mail="Réponse de $email";
$headers="From:$prenom $nom <$email>\n";     //Facultatif

//Envoi du mail
mail('moi@example.com',$sujet_mail,$corps_mail,$headers);     //$headers est facultatif



Donc normalement pour récupérer les donné du formulaire dans mon cas ce serai
$nom=$_POST['Nom']
$prenom=$_POST['Prenom']
etc.

Oui, c'est exactement ça, sauf que toi tu ne le faisais pas :-)
En fait ça peut marcher ce que tu as fait, tout dépend de la configuration du serveur, mais c'est un trou de sécurité important et il vaut mieux récupérer les variables superglobales ($_POST['index'], etc ...).

Par contre les vérification Javascript ce n'est pas suffisant. Vérifier avec JS c'est très bien pour dire immédiatement à l'internaute qu'il a donné une valeur incorrecte, mais il faut absolument refaire ses modifications côté serveur (ne fais jamais confiance au client ;-)
1
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 17:26
Il existe une fonction PHP qui permet d'envoyer très simplement des mails, voilà typiquement comment l'appeler :

mail('destinataire@example.org', 'sujet du message', 'Bonjour, ceci est le contenu de mon message !');
En approfondissant un peu elle permet d'envoyer des mails au format HTML.

Il te suffit donc d'appeler cette fonction en adaptant selon tes souhaits, par exemple :
mail('toi@example.org', "Nouveau message de $nom $prenom", $message);
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 17:39
Yoan bonjours et merci de ta réponse,

je vais essayer avec se que tu vien de m'écrire .

Sinon je met le code que j'avais trouvé et réadapter a mes valeur mais celui une fois appélé il n'envoi rien et surtout le script entier s'écrit sur la page web donc aucune execution de ce dernier.

Le voici

<?php
$adresse="mon mail@gmail.com";
$from="From: $Prenom $Nom<$eMail>\r\n";
$from.="Reply-To: $Prenom $Nom <$eMail>\n";
$from.="X-priority:3\n";
$texte="<html>";
$texte.="$Message";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";  
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoy&eacute; ! Je vous r&eacute;pondrais rapidement. Merci!</h2></font><br><a href="index.html"target="_top""/>Cliquez ici pour revenir &agrave; l'accueil</a></center>");
else
echo("<center><font color=red><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail...d&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>");
?>


par contre en faisant mon formulaire j'ai mis des majuscule au nom de mes valeur est-ce génant en PHP ou pas ?

Merci je part faire un test de ce que tu m'as proposé.

0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 17:43
il n'envoi rien et surtout le script entier s'écrit sur la page web donc aucune execution de ce dernier.
Ca veut dire quoi cette phrase ? Le code source PHP n'est pas interprété (il s'affiche en clair dans le navigateur) ?

SI oui, vérifie que le fichier qui envoie le mail est bien un script d'extension php et non html ou htm.
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 17:48
Il s'appelait " envoi.php " je l'ai mis dans Wamp dans mon dossier www et pour le test j'ai mis les formulaire avec.

Pourquoi le code aurai du fonctioner.

et j'ai pensé a régler mon PHP.ini sur gmail avec mon adresse

Voici ou j'ai le Tuto [url][https://www.vulgarisation-informatique.com/mail.php[/url]

Mais ce que je comprend pas c'est par exemple mes donné de formulaire c'est $nom , $Prenom , $eMail et encore quelque autre, ou dois-je les mettre.

Ensuite il disent :
 $headers ='From: "nom"<adresse@fai.fr>'."\n";
mais le mail je le connaitrai pas donc dois-je mettre

$headers ='From: "nom"<$eMail>'."\n"; un exemple parmi d'autre que je saisi pas.

Merci beaucoup pour le temps que tu pourra m'accorder.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 18:03
$headers ='From: "nom"<$eMail>'."\n"; un exemple parmi d'autre que je saisi pas. 

Oui, oui, il faut que tu le remplaces. L'adresse en question est celle de l'expéditeur.

Mais est-ce que le code PHP est interprété ou est-ce qu'il s'affiche dans la page WEB ? S'il existe, ce problème est à régler avant la question du formulaire !
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 18:13
Alors que le premier code qui merdais s'affichai complétement dans la page Web on voyait le code comme un contenu d'une page web faite en HTML pourtant quand j'ai créer la page php dans dreamweaver j'ai fais Nouveau\PHP puis ensuite enregistrez sous : envoi.php.

Sino j'ai essayer ce que tu me proposai avec la fonction mail()

là il y a eu interprétation mais pas de reception de mail pour le moment.

Par contre j'ai pas fait de test avec le tuto dont je te parlai car plus complex a ajustez.

Sinon parmi mes 4 formulaire je fais mes test sur le plus petit qui as comme champs a remplir(tel que je l'ai ai écrit sous Dreamweaver) :

Nom
Prenom
Nom du groupe ou nom d'artiste
eMail
Message.

Donc avec la fonction mail j'ai fais :

<?php
mail('mon adresse@gmail.com', "Nouveau message de $Nom $Prenom", $Message);
?>

Donc sa s'éxécute mais j'ai pas pas mis echo donc je tombe sur une page sans rien mais par contre pas de mail.

Merci pour l'aide que tu m'apporte.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 18:16
Bon et bien garde le code qui-merdait parce que lui il est complet et il te permettra de voir s'il y a eu un problème à l'appel de la fonction mail ou non.
Si le code est affiché en brut c'est probablement pour l'une des raisons suivantes :
* le fichier n'a pas l'extension php
* le code php n'est pas encadré de <?php et ?>
Vérifie cela sur ton code, et il n'y a pas de raison qu'il ne soit pas interprété alors que l'autre si.
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 18:41
Bon le script s'éxécute toujours pas je vois tous sur la page web.

Voici mon code envoi.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mon site/envoi</title>
</head>
<body>
<?php
$adresse="mon adresse@gmail.com";
$from="From: $Prenom $Nom<$Mail>\r\n";
$from.="Reply-To: $Prenom $Nom <$Mail>\n";
$from.="X-priority:3\n";
$texte="<html>";
$texte.="$Message";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";  
if (mail($adresse,$Nom_du_groupe_ou_nom_d_artiste,$Message,$from))
{
echo("<center><font color=green><br><br><br><h2>Formulaire envoy&eacute; ! Je vous r&eacute;pondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir &agrave; l'accueil</a></center>");


else

echo("<center><font color=red><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail...d&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>");

?>
</body>
</html>


voilà c'est le code d'origine avec mes modif pour les valeur de mon formulaire et mon adresse
Et j'ai bien fais attention a l'histoire du .php et les <?php ?>

Merci pour ton aide
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 18:50
Tu remarqueras quand-même que tes variables $Prenom,$Nom,$Nom_du_groupe_ou_nom_d_artiste,$Message sont lues mais jamais assignées ....
Sinon enlève le '{' en trop (après le if(mail(etc...))).

Sinon je ne m'explique pas sur le fait que ça ne soit pas interprété. Tu peux coller ici le code PHP que tu as essayé et qui marche (enfin qui est interprété plutôt).
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 18:58
le code qui c'est interprété est celui-ci
<?php
mail('mon adresse@gmail.com', "Nouveau message de $Nom $Prenom", $Message);
?> 


Tu remarqueras quand-même que tes variables $Prenom,$Nom,$Nom_du_groupe_ou_nom_d_artiste,$Message sont lues mais jamais assignées

je comprend pas ce que tu veut dire par lu mais pas assigné?

sinon voici un autre code PHP trouvé sur la page cité plus haut avec mes adaptation de mes valeur.

<?php
     $headers ='From: "$Nom"<$Mail>'."\n";
     $headers .='Reply-To: $Mail'."\n";
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';

     $message ='<html><head><title>Un titre ici</title></head><body>Un message de test</body></html>';

     if(mail('$Mail', '$Nom_du_groupe_ou_artiste', $message, $headers))
     {
          echo 'Le message a été envoyé';
     }
     else
     {
          echo 'Le message n\'a pu être envoyé';
     }
?>

Je dois t'avoué que moi aussi je suis perdu car sa marche pas et en plus difficile desfois de comprendre les tutos

merci beaucoup a toi pour l'aide que tu m'apporte.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
2 mai 2009 à 19:16
Une variable peut être lue (consultée) par exemple :
echo $mavariable;

ou affectée (on lui donne une valeur) :
$mavariable=7;

Si tu lis une variable sans l'affecter non seulement c'est incohérent dans ton code mais en plus c'est très dangereux puisque si tu ne l'initialise pas, le zone mémoire accordée à cette variable peut valoir n'importe quoi ...

Dans ton cas tu utilises les variables $Nom etc alors que tu ne leur a jamais donné de valeur.
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 19:30
en fait dans mon formulaire HTML mes champs a remplir on donc le nom : Nom, Prenom etc.

Donc comment je dis dans envoi PHP de m'écrire sur le mail quelle est le Nom, Prenom, Message et quelle case a t-il coché.

En fait je fais un site pour proposer mes service en Musique et donc j'ai des formulaire pour dékà mieux ciblè la demande en plus du test qu'il peut déposé.

Donc là mon formulaire et le Javascript qui test les infos du formulaire c'est OK.

Mais justement comment je dit dans PHP dans le mail écris moi sur le corp du message les éponse du formulaire.

Je te demande pas de m'écrire le code PHP car sinon au final j'aurais toukour rien compris en plus avec 4 formulaire je vais pas avancé.

Mais peut tu me mettre un bout de ce que tu écrirai toi pour lui dire et pour comme tu me le disai affecter la variable $Nom au nom que le gars a mis dans le formulaire.

Car moi je pensai que le fait que le formulaire avais methode=Post c'était bon le formulaire savait que Nom=$Nom dans mon PHP

donc c'est pourquoi au message je mets $Nom et $etc pour les avoir sur le mail.

Car dans ma tête si je déclare $Nom=le nom écrit dans le formulaire //moi je le sais pas à l'avance et idem pour les bouton radio etc.

Je vois pas déclaré ce que je connait pas.

Donc normalement pour récupérer les donné du formulaire dans mon cas ce serai

$nom=$_POST['Nom']
$prenom=$_POST['Prenom']
etc.

Donc par le même biais je déclare et récupère les infos ensuite maintenant si je dis $nom il seras de quoi je parle qu'en pense tu?

Vraiement merci de l'aide que tu m'apporte.



Merci de ton aide
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
2 mai 2009 à 20:35
Alors en fait c'est $_POST,
Mais $nom=$HTTP_POST_VARS['nom']; mais normalement $_POST tout cours doit marcher.

Bon là je me suis pris la tête toute l'après-midi dessus donc je vais prendre un break on ai samedi quand même c'est un coup a se foutre en l'air la soirée.

Yoan un grand merci pour ton aide et si tu repasse par là je veux bien ton avis sur ce que j'ai trouvé.

le complément vient de cette adresse: [url]http://wiki.mediabox.fr/tutoriaux/php/lenvoi-mail-php[/url]
0
chtilolo Messages postés 91 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 4 juillet 2009 2
4 mai 2009 à 17:18
Yoan merci beaucoup de ton aide,

oui tu as raison pour déclarer les variable.

Pour le mail après j'ai dus utilisé un class qui s'appelle PHPmailer car j'utilisai des boite mail avec authentification.

donc du coup sa marchait pas sans.Car suivant le compte mail 'est pas suffisant de faire avec mail().

En l'occurence c'était gmail mais pas réussi a faire marché donc je me suis rabattue sur mon compte dartybox et impecc

la sa marche impeccable pour le mail.

Mais maintenat je galère sur SQL.

Car avant le mail sur mon farmulaire est un choix avec 1 réponse a cocher parmis deux et suivant cette réponse qui d'ailleur as une table a elle dans ma BDD je voudrais faire l'analyse et suivant le résulatat.

enfin bref j'ai fais un nouveaux sujet pour ça.

Donc pour revenir au mail c'est nickel je déclare bien mes variable et hop avec la class php mailer sa envoi.

Merci beaucoup pour l'aide que tu m'as apporter
0