[PHP] formulaire pour mail à améliorer... ? ?

Fermé
liegeus Messages postés 113 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 24 octobre 2012 - 28 juin 2004 à 14:03
yonis5555 Messages postés 71 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 7 janvier 2010 - 26 août 2007 à 13:55
Bonjour, j'ai une page avec du php sur mon site pour que les visiteurs puissent nous envoyer un mail : ils écrivent dans un cadre leur texte, dans un autre leur adresse mail et cliques sur envoyer pour faire partir le mail. bon ça ça marche voici le code php pour ça :

<?
$message = $_POST["textarea"] ;
$email = $_POST["email"] ;
if($textarea==""):
print "écrivez un contenu au mail";
elseif($email==""):
print "Veuillez écrire votre adresse mail";
else :
print "Votre message : ".$textarea." <br>";
print "Votre mail : ".$email." <br>";
print "Votre message a bien été envoyé<br>";
mail("adrdestinataire@hotmail.com", "Formulaire", "Voici le message :\n\n$textarea\n\n\nVoici l'email :\n\n$email");
endif;
?>

Ma question est pourquoi dans chaque mail qu'on reçoit, les espaces sont remplacés par des "\" ? comment faire pour éviter cela ?

seconde question, le mail que l'on reçoit, est envoyé avec l'adresse mail de l'hébergeur (exmple : si c'est hébergé sur mon compte free, les mail sont onvoyé par monadresse@free.fr) comment faire pour mettre l'adresse de celui qui écrit le mail à cet endroit au lieu de simplement la cité en fin de mail reçu comme c'est le cas avec mon code actuel ?

merci beaucoup si vous pouvez l'aidé à améliorer tout ça !

PS. la page est visible à l'URL suivante si ça peut aider :
http://liegeus.free.fr/Site/Contacts.html
A voir également:

16 réponses

Pour les "\", tu es sur que ce sont bien les espaces ?
Essayes de mettre cette ligne avant d'envoyer le mail :
stripslashes($textarea);
Si ça ne marche pas, essayes :
str_replace("\", " ", $textarea);

Pour l'adresse, au lieu de mettre :
mail("adrdestinataire@hotmail.com", "Formulaire", "Voici le message :\n\n$textarea\n\n\nVoici l'email :\n\n$email");
Rajoutes un paramètre pour que ca donne ca :
mail("adrdestinataire@hotmail.com", "Formulaire", "Voici le message :\n\n$textarea\n\n\nVoici l'email :\n\n$email", "From: ".$email);
0
oups, pour les \, c'est pas pour les espaces, c'est quand il y a un apostrophe, quad on écrit "l'amis" dans le formulaire, on reçois "l\'amis" dans le mail...
alors docteur c'est grave? que dois je faire ?

par contre, rajouter un paramètre "From: ".$email ça ne marche pas... les mails n'arrivent plus quand je le rajoute....

merci
0
Utilisateur anonyme
29 juin 2004 à 13:12
Salut,
Voila comment je vois le truc:

<? 
$message = $_POST["textarea"] ; 
$message = stripslashes($message);
$email = $_POST["email"] ; 

if($textarea=="") {
	print "écrivez un contenu au mail"; 
}
else {
	if($email==""){
		print "Veuillez écrire votre adresse mail"; 
	}
	else {
		print "Votre message : ".$textarea." <br>"; 
		print "Votre mail : ".$email." <br>"; 
		print "Votre message a bien été envoyé<br>"; 
		mail("adrdestinataire@hotmail.com", "Formulaire", "Voici le message :\n\n$message\n\n\nVoici l'email :\n\n$email"); 
	}
}
?>  

Ca devrait fonctionner comme cela. A noter, le champ From est optionnel étant donné qu'il est par défaut défini dans le php.ini

A+

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
bon même comme ça, j'ai des "\" à toutes les apostrophes dans les mails reçus... mais j'ai pu régler le pb de l'expediteur. merci les gars
0

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

Posez votre question
Bonjour, jai créé un formulaire php, tout marche parfaitement , mais une seul chose, je voudrais savoir comment faire pour que si mon formulaire voit que la eprsonne na pas remplis des case et quel voit quil y a des case vides quel disent veuillez remplir les case.
Comment fait ton cela ?
merci
0
salut ;o)
Je verrais plutôt la chose comme ca en fait :
Attention : à la ligne des entetes, ne mets pas d'espaes entre els guillemets, je l'ai fait pour les differencier l'un de l'autre ;o)
<?
$body = $_POST["textarea"] ;
$message = stripslashes($body);
$email = $_POST["email"] ;
$entetes = 'From : " '.$email.' " <'.$email.'>';
if( empty($message) ) {
print"écrivez un contenu au mail"; }
elseif(empty($email)) {
print "Veuillez écrire votre adresse mail"; }
else {
print "Votre message : ".$message." <br>";
print "Votre mail : ".$email." <br>";
print "Votre message a bien été envoyé<br>";
mail("adrdestinataire@hotmail.com", "Formulaire", "Voici le message :\n\n$textarea\n\n\nVoici l'email :\n\n$email", $entetes); }
?>
0
Re-Salut ;o)
Désolé de poster un 2nd message, mais je n'avais pas vu la dernière question lle de Magnar) >_<
Il faut que lorsque tu recupere les donnée du formulaire (on va dire nom, email, message), il faut que tu entre la commande suivante :
<?php
$nom = $_POST["nom"];
$email = $_POST["email"];
$message = $_POST["messages"];

// Tu dois entrer le bloc ci dessous :
if ( empty($nom) || empty($email) || empty($message) )
{
echo 'Vous n'avez pas rempli une rubrique nécessaire ;o) <br> <a href="javascript:history.back()">Retour</a>
}
// et tu contiue ton script
?>
pour el retour, je ne sais pas si le code jscript est bon, car je susi une daube en jscript :P (ou tu peux mettre le message de ton choix)
0
Je comprend pas tout a fait ton expliquation, jai un site et jai 2 fichier, un pour le formulaire en html et un nomé envoi.php pour l'envoyé. Je veux faire une vérification pour voir si tout les champ on été remplis . Dois-je créé un nouveau fichier php et mettre ton contenu dedans, svp peut tu rexpliquer plus clairment,
Merci davance
P.S : je suis débutant dans le php
0
Bonjour encore une fois,
J'aimerais savoir le code php, pour mettre une image (gif) en background

Merci
0
Utilisateur anonyme
2 juil. 2004 à 09:36
Bonjour,
Ta question concernant un autre sujet, merci la prochaine fois de recréer un nouveau post.

Il n'y a pas de "code php" pour mettre une image en fond.
Il s'agit de html.
Insere dans la balise body l'option background.

<html>
<body backgroud = "./fondecran.gif">
Hello world
</body>
</html>

Kalamit,
Vol au dessus d'un nid de Pika-baffe. :)
0
Pour revenir au formulaire,
Je fait un script php et j'ai mis mes code si un champs n'est pas remplis un message survien et la fonction exit(); s'ajoute.Cela marche normalement. Par contre si tout les champs sont corectement inscrit, la fonction exit(); reste toujours la et le formulaire est incapable d'envoyer.
Voici le code :

if(empty($email))
print "Vous n'avez pas repondu à ce champ : Votre adresse E-mail:<br><br></center>";
{
print "<center>Cliquez sur Précédent pour recommencer</center>";
exit();
}
$recipient = "voro@hotmail.com";
$subject = "Formulaire";

$mailheaders = "From:Formulaire<> \n";
$mailheaders .= "Reply-To: $voro@hotmail.com\n\n";

mail($recipient, $subject, $msg, $mailheaders);

echo "<HTML><HEAD>";
echo "<TITLE></TITLE></HEAD><body>";
echo "<H1 align=center>Formulaire envoyée avec succès.Merci !</H1>";
echo "<P align=center>";
echo Merci<br</P>";
echo "</BODY></HTML>";
?>

En aute mots : si tout les camps sont corectement inscrit, le reste du script apres exit(); ne marche pas
Comment faire pour que si les champs sont inscrits, exit(); s'annule et le formulaire est envoyé
Merci d'avance
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 juil. 2004 à 02:09
Salut,

Il faut placer l'accolade juste après la condition. Donc ça donne:

if(empty($email)) {
print "Vous n'avez pas repondu à ce champ : Votre adresse E-mail:<br><br></center>";

print "<center>Cliquez sur Précédent pour recommencer</center>";
exit();
}


Et pour faire plus simple, comme exit() de permet d'ajouter un message, tu peux faire comme ça :

if(empty($email)) {
exit("<center>Vous n'avez pas repondu à ce champ : Votre adresse E-mail:<br><br>Cliquez sur Précédent pour recommencer</center>";
}

Voilà, et si je puis me premettre quelques remarques....
Je ne comprends pas pourquoi tu as affecté deux fois une valeur différente $mailheaders. Et je comprends pas trop non plus d'où vient la variable $voro@hotmail.com (peut être voulais tu mettre $recipient.
Voilà, et tu as oublié une guillemet là 
echo Merci<br</P>";


Voilà :-)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
3 juil. 2004 à 02:21
Oups, j'ai fait une tite erreur dans ma mise en page.
Désolé je peux plus éditer :-)
0
Merci pour le tuyau?ca m'a été bénifique
0
yonis5555 Messages postés 71 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 7 janvier 2010 2
26 août 2007 à 13:25
Bonjour,

Dans mon formulaire de contact, j'ai voulu poser une question de securité, avant que le mail soit envoyé.
Du genre:

Dans ma feuille contactus.html

<form action="contactus1.php" method="post" enctype="multipart/form-data" onSubmit="MM_validateForm('name','','R','mail','','RisEmail','Answer','','R','message','','R');return document.MM_returnValue">
<p>Votre nom : <br />
<input name="name" type="text" id="name" />
<br />
Votre e-Mail : <br />
<input name="mail" type="text" id="mail" />
<br />
Votre message : <br />
<textarea name="message" cols="50" rows="5" id="message"></textarea>
<input type="hidden" name="objet" value="Object" />
</p>
<p>De quelle couleur est le ciel?</p>

<input name="Answer" type="text" id="Answer"size="11" />

<br />
<input name="submit" type="submit" value="Envoyer !" />
<input name="reset" type="reset"/>
</p>
</form>

---------------------------------------------------------------

Dans contactus1.php

<?php

$answer = $_POST['Answer'];
$couleur = 'bleu';

if ($answer != "$couleur"){
echo("Erreur: ce n'est pas la bonne reponse...");
echo("<meta http-equiv=\"refresh\" content=\"1; url=contactus.html\" />");
}else{
echo ("Veuillez confirmer l'envoi du message");
}
?>
<?php
//On stocke les infos que le visiteur a envoyé dans des variables
$name = htmlentities($_POST['name']);
$mail= htmlentities($_POST['mail']);
$message = htmlentities($_POST['message']);

//L'e-Mail du destinataire du message
$destinataire = 'monemail@gmail.com';
//L'objet du message, définis dans le champs caché
$objet = $_POST['objet'];


//Le message qui vous est envoyé

$message_envoye =
'Nom : ' . $name .'\r\n'.
'E-Mail :' . $mail . '\r\n'.
'Message : ' . $message .'\r\n' .
'X-Mailer: PHP/' . phpversion();


$ip = $_SERVER['REMOTE_ADDR'];
$message_envoye .= 'IP: $ip\n';




//Le mail du posteur
$from = 'From: ' .$destinataire;


echo("
<form method='post' action='contactus.php'>");
echo("<input name='name' type='hidden' id='name' value='$name'> \n");
echo("<input name='mail' type='hidden' id='mail' value='$mail'> \n");
echo("<input name='message' type='hidden' id='message' value='$message'> \n");
echo("<input name='destinataire' type='hidden' id='destinataire' value='$destinataire'> \n");
echo("<input type='hidden' name='objet' value='$objet'> \n");
echo(" <input type='hidden' name='ip' value='$ip'> \n");
echo("<input name='Suivant' type='submit' value='Suivant'> \n");
echo("</form>\n");?>

-----------------------------------------------------

Dans contactus.php

<?php
//On stocke les infos que le visiteur a envoyé dans des variables
$name = htmlentities($_POST['name']);
$mail= htmlentities($_POST['mail']);
$message = htmlentities($_POST['message']);

//L'e-Mail du destinataire du message
$destinataire = "monemail@gmail.com";

//L'objet du message, définis dans le champs caché
$objet = $_POST['objet'];


//Le message qui vous est envoyé

$message_envoye =
'Nom : ' . $name ."\r\n".
'E-Mail :' . $mail . "\r\n".
'Message : ' . $message ."\r\n" .
'X-Mailer: PHP/' . phpversion();


$ip = $_SERVER['REMOTE_ADDR'];
$message_envoye .= "IP: $ip\n";




//Le mail du posteur
$from = "From: " .$destinataire;


if(mail($destinataire, $objet, $message_envoye, $from)){
echo ('Merci . Votre message a été envoyé avec succès .');
echo ('<meta http-equiv="refresh" content="2;url=home.html"');
} else {
echo ('<p>Erreur mail non envoyé</p>');
echo ('<meta http-equiv="refresh" content="2;url=contactus.html"');
}
?>

----------

Voila mon probleme: quand je recois l'email, s'il y a des appostrophe dans le mail je ne recois rien apres les appostrophe par exemple:

Mon message: Bonjour je m'appelle Jonathan. J'ai 20 ans.

L'e-mail que je recois:

Bonjour je m\\


Auriez vous une solution?
0
yonis5555 Messages postés 71 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 7 janvier 2010 2
26 août 2007 à 13:55
j'ai oublié de préciser que j'ai vérifié avec phpinfo si j'avais une librairie GD et j'en ai pas.. donc cùest impossible de faire une image cryptée... s'il y a un moyen de l'installer merci de me le dire ça faliciterait tout
0