Probleme envoi formulaire en php

Fermé
ptinouvo Messages postés 3 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 13 mars 2010 - 13 mars 2010 à 15:54
 ptinouvo - 15 mars 2010 à 22:15
Bonjour,

J'ai un soucis: j'ai crée un formulaire de contact sur mon site web.
J'ai écrit un script php pour qu'il me soit envoyé à mon adresse mail mais problème ça ne marche pas. Je suis nouvo dans le web!! Merci pour votre aide

Voici le code de mon formulaire:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<p align="center"><strong>Contact</strong></p>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">
<tr>
<td colspan="3"><strong>Envoyer un message</strong></td>
</tr>
<tr>
<td><div align="left">Votre nom :</div></td>
<td colspan="2"><input type="text" name="nom" size="45" maxlength="100"></td>
</tr>
<tr>
<td width="17%"><div align="left">Votre mail :</div></td>
<td colspan="2"><input type="text" name="mail" size="45" maxlength="100"></td>
</tr>
<tr>
<td><div align="left">Sujet : </div></td>
<td colspan="2"><input type="text" name="objet" size="45" maxlength="120"></td>
</tr>
<tr>
<td><div align="left">Message : </div></td>
<td colspan="2"><textarea name="message" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td></td>
<td width="42%"><center>
<input type="reset" name="Submit" value="Réinitialiser le formulaire">
</center></td>
<td width="41%"><center>
<input type="submit" name="Submit" value="Envoyer">
</center></td>
</tr>
</form>
</table>

Et voici le code php de mon fichier envoi.php:

1.<?php
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];
$objet=$HTTP_POST_VARS['objet'];
$message=$HTTP_POST_VARS['message'];

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$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="mon adresse@yahoo.fr"; //remplacez "webmaster@votre-site.com" par votre adresse e-mail
$body="$message";
if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page d'acceuil<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.henrilamare.com">ici
</a></p>

Merci d'avance pour résoudre ce problème qui n'est pas bien compliqué pour un informaticien aguerri mais qui constitue un réel obstacle pour un novice.

8 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
13 mars 2010 à 16:01
Tu es nouveau dans le monde du Web mais tu codes avec des anciennes pratiques.
C'est $_POST et pas $HTTP_POST_VARS
Et il faut voir si ton hébergeur accepte la fonction mail()
0
ptinouvo Messages postés 3 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 13 mars 2010
13 mars 2010 à 16:08
Ok F16, je réactualise mon code

.<?php
$nom=$_POST['nom'];
$mail=$_POST['mail'];
$objet=$_POST['objet'];
$message=$_POST['message'];

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$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="mon adresse@yahoo.fr"; //remplacez "webmaster@votre-site.com" par votre adresse e-mail
$body="$message";
if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page d'acceuil<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.henrilamare.com">ici
</a></p>

J'ai mis en ligne le formulaire, quand je fais un test, il m'indique que le formulaire à bien été envoyé ( c'est que mon hébregeur accepte la fonction mail??? mais je ne reçois pas le mail.
Mon hébergeur est OVH.
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
13 mars 2010 à 16:18
<?php
/* Données */
$nom = $_POST['nom']; 
$mail = $_POST['mail']; 
$subject = $_POST['objet']; 
$body = $_POST['message']; 

/* Entêtes */
$headers  = 'Content-type: text/plain; charset=iso-8859-1'."\r\n"; 
$headers .= 'From: '.$nom.' <'.$mail.'>'."\r\n";
$headers .= 'Reply-to: '.$nom.' <'.$mail.'>'."\r\n";
$headers .= 'X-Mailer: PHP/'.phpversion();

$destinataire = 'monadresse@yahoo.fr';

if(mail($destinataire,$subject,$body,$headers)) { 
	echo "Votre mail a été envoyé<br>"; 
} else { 
	echo "Une erreur s'est produite"; 
} 
?>
</p> 
<p style="text-align:center;">
	Vous allez bientôt être redirigé vers la page d'accueil<br/> 
	Si vous n'êtes pas redirigé au bout de 5 secondes, cliquez <a href="http://www.henrilamare.com">ici</a>.
</p>
J'ai un peu améliorer ton code.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mars 2010 à 16:19
chez OVH, dans le $headers

il ne faut pas \r\n mais seulement \n à la fin des lignes
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
13 mars 2010 à 16:22
T'en es sûr ?
Je suis chez OVH et \r\n fonctionne ...
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mars 2010 à 16:26
moi j'avais des pb avec \r\n et j'avais lu dans le forum OVH qu'il ne les fallait pas, j'ai modifie mes scripts en \n et ils fonctionnent.

Cela date d'un an au moins, je n'ai pas réessayé depuis.
0
ptinouvo Messages postés 3 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 13 mars 2010
13 mars 2010 à 16:32
En tout cas je viens d'essayer et le mail m'est bien transmis sauf que dans le mail que je reçois il n'ya pas l'adresse mail de l'expediteur que je lui demande de renseigner dans le formulaire!!

Mais sinon vous êtes des pros merci!!!
Si vous avez une idée comment améliorer mon code pour que je reçoive totues les infos du formulaire!!
Merci d'avance
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
13 mars 2010 à 16:43
Le nom est l'adresse de l'expéditeur sont à notée quelque-part dans ton client mail.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mars 2010 à 16:54
tu reuperes bien:

$nom = $_POST['nom'];
$mail = $_POST['mail'];
$subject = $_POST['objet'];
$body = $_POST['message'];


mais dans le mail envoyé

mail($destinataire,$subject,$body,$headers)

tu ne reprend que le sujet et le body

donc il faut:
$nom = $_POST['nom']; 
$mail = $_POST['mail']; 
$subject = $_POST['objet']; 
$body=$nom."\n    ".$mail."\n\n";  // \n c'est pour avoir des saut de ligne dans ton mail
$body .= $_POST['message'];
0
merci alain et F16 pour vos conseils!!!
0