Page 1 sur 2
Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 15:23
par Fika
Bonjour
J'ai pas mal écumé le Web et les forums à la recherche de la solution à mon problème, mais sans succès.
J'ai bien trouvé le code ci-dessous, mais il ne m'envoie aucun mail.
Y a-t-il quelque chose que j'ai mal fait ? Y a-t-il peut-être quelque chose à régler du côté de Wamp ?
Avez-vous une autre solution ?
Tout mon site est fait en XHTML/CSS, et je suis absolument neuneu en PHP.
Merci infiniment !
Ma partie HTML :
Code : Tout sélectionner
<form method="POST" action="formmail.php" >
<fieldset>
<input type="hidden" name="subject" value="formmail">
<label for="nom">Nom :</label><input type="text" id="nom" />
<label for="prenom">Prénom :</label><input type="text" id="prenom" />
<label for="email">Email :</label><input type="text" id="email" />
<label><INPUT TYPE="submit" VALUE="Envoyer" ></label>
</fieldset>
</form>
Ma partie PHP, que j'ai mis dans le <body> :
Code : Tout sélectionner
<?php
$TO = "[email protected]";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://localhost/sfp/fr/");
?>
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 15:40
par Mazarini
Bonjour,
je te conseille d'envoyer le mail comme cela :
error_reporting(E_ALL);
if mail($TO, $subject, $message, $h)
{
Header("Location: http://localhost/sfp/fr/");
}
else
{
echo 'erreur envoi mail';
}
Cela devrai te permettre de voir l'erreur sur la fonction mail.
Sous windows, il faut paramétrer le serveur SMTP dans php.ini en prenant celui de ton fournisseur d'accès internet.
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 17:11
par Fika
Merci de ta réponse.
J'ai effectivement résolu le problème de l'envoi de mail : c'était à cause du serveur SMTP.
Je l'ai donc mis sur un serveur et il envoie bien un mail, mais celui-ci m'arrive vide...
Iiiirk.
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 17:33
par moogli
salut,
il ne faut aucun affichage avant un header et ce n'est pas le cas dans ton script vu le message d'erreur.
vérifie le contenu des variables que tu envoie avant envoie pour être certain du contenu.
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 17:59
par Fika
Excuse-moi, je suis super neuneu en PHP, et je ne comprends même pas ce que tu m demandes...
La preuve : J'avais mis le PHP dans le <body> en laissant l'en-tête HTML. Maintenant dans ma page PHP, je n'ai plus que le PHP. C'est de ça dont tu parles peut-être ?
Tout marche maintenant, sauf que je reçois un mail avec comme seul texte : subject : formmail
Il ne comprend pas quelles données récupérer dans mon formulaire ?
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 18:12
par moogli
heu wé mais sinon le php avant le html
par exemple
<?php
// validation du formulaire et envoie du mail
?>
<html>
<head></head>
<body>
blabla
</body>
</html>
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 18:22
par Fika
Ah OK je saurai pour la prochaine fois, merci.
Néanmoins, là c'est un problème que j'avais résolu, aurais-tu une solution pour mon problème d'envoi de mail vide ?
Thanxs !
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 18:23
par moogli
quel est le dernier code utiliser ?
le formulaire et la validation
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 18:50
par Fika
Mon HTML :
<form method="POST" action="formmail.php" >
<fieldset>
<input type="hidden" name="subject" value="formmail">
<label for="nom">Nom* :</label><input type="text" id="nom" size="70" />
<label for="prenom">Prénom* :</label><input type="text" id="prenom" size="70" />
<label for="adresse">Adresse* :</label><input type="text" id="adresse" size="70" />
<label><INPUT TYPE="submit" VALUE="Envoyer" ></label>
</fieldset>
</form>
Mon PHP (intégralité du fichier PHP) :
<?php
$TO = [email protected]";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://ina.fr");
?>
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 19 janv. 2011, 22:23
par moogli
oula oui c'est du php3 la nan ?
<?php
$TO = [email protected]";
$h = "From: " . $TO;
$message = $_POST['nom']."\r\n".$_POST['prenom']."\r\n".$_POST['adresse'];
mail($TO, $_POST['subject'], $message, $h);
header("Location: http://ina.fr");
?>
esdsai ça
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 20 janv. 2011, 00:20
par Fika
Ca m'envoie toujours un mail dont le seul contenu est : subject : formmail
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 20 janv. 2011, 02:27
par moogli
bon j'ai donc testé
<?php
$TO = "[email protected]";
$h = "From: " . $TO;
//bon ça c'est pour éviter le formulaire :roll: (ça fonctionne pareil avec un formulaire)
$_POST = array('nom'=>'moog','prenom'=>'li','adresse' =>'jungle city ;)','subject'=>'ceci est un mail de test ^^');
$message = $_POST['nom']."\r\n".$_POST['prenom']."\r\n".$_POST['adresse'];
if (mail($TO, $_POST['subject'], $message, $h)) {
echo 'mail oki !';
}
else echo 'mail nok :\'(';
//header("Location: http://ina.fr");
?>
mail reçu
- titre ceci est un mail de test ^^
- message
moog
li
jungle city
le code est donc fonctionnel.
si ça ne l'est pas pour toi peut tu vérifier si
- l'affichage des erreurs est actif ?
- un var_dump($_POST); fournit bien les valeurs saisies dans le formulaire
- dans le formulaire html la méthode est normalement en minuscule, mais il me semble que ça change rien.
au pire test ce code de ce message tu verra bien ce que ça donne
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 20 janv. 2011, 02:38
par Fika
bon j'ai donc testé
Merci !
J'ai pris ton PHP et l'ai mis à la place du mien et j'ai reçu le même mail que toi.
Maintenant comme je suis newbie totale en PHP je ne suis pas sûre de saisir ce que tu me demandes :
l'affichage des erreurs est actif ?
J'ai regardé dans le fichier 'apache_error.log' mais il n'y avait rien à la date d'aujourd'hui.
un var_dump($_POST); fournit bien les valeurs saisies dans le formulaire
Excuse-moi mais je ne comprends pas ce que ça veut dire.
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 20 janv. 2011, 03:55
par moogli
juste mettre un var_dump($_POST); dans le fichier cible du formulaire pour voir si tu a bien toute les info du formulaire qui s'affichent
@+
Re: Récupérer les données d'un formulaire et les envoyer par mai
Posté : 20 janv. 2011, 22:20
par Fika
Bonsoir
Je l'ai donc mis dans formmail.php, au début, comme ça :
<?php
var_dump($_POST);
$TO = "[email protected]";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://ina.fr");
?>
C'est ce que tu voulais ?
Ca n'a rien changé en tout cas.