Données d'un formulaire envoyées vers e-mail via PHP

Signaler
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012
-
Salut tout le monde,
tout d'abord, je voudrais dire que je n'ai pour ainsi dire jamais fait de PHP. Il faudra être indulgent avec moi, je crains .

Ma copine est en train de créer son site perso et y a mis un formulaire de contact; elle voudrait:
[list]
*recevoir les infos remplies par les personnes dans sa boîte mail
*afficher un message de succès d'envoi sur l'écran
*qu'un mail de confirmation soit envoyé au visiteur qui a rempli le formulaire
/list

J'ai essayé en cherchant sur le net et suis arrivé à ça (pas fameux ...) mais bien sur, ça marche pas
HTML de sa page:





Contact


Contact

Some reasons why you might want to contact
me...






Is there something you miss on this site?


Do you have any suggestions for me on how to improve
the site?


Would you like to visit me to have something designed
specially for you?


Are you wondering whether that necklace could be created
in another colour?


Would you like to receive a news mail when newly created
items are added to this site?


Have you bought jewellery somewhere but you would like
to replace the ear wires or the clasp?


Do you have old jewellery which you would like to see
transformed into a new piece of art?


Would you just like to share your opinion with me?


Do you need my opinion on something?


Have you bought the most beautiful beads but you have
no idea how to create something with them?


Is an item sold and would you like to have it reproduced
for you?


Would you like to sell my items in your shop?






If you have any questions or suggestions
about the artistic creations or about the site, you can always contact
me by completing the form below. If you'd like to order something from
this site, please go to the [Order.htm order
form].









----

First name,
,
----

Last name,
,
----

Subject,
,
----

Comments or questions,
,
----

News mails?,
yesno,
----

E-mail address,


















et le PHP (contact_form.php:



6 réponses

Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Bonjour,

voici un exemple de form mail simple, avec ça tu devrais t'en sortir
<form action="" class="style1" method="post">
<label id="Label1">subject 



 </label>

<label id="Label2">

body 

</label> <textarea name="Body" class="style2"></textarea> 

</form>
<?php
$to='georges@gillardg.net';
if (isset($_POST['Subject'] ))
mail($to,$_POST['Subject'],$_POST['Body']);
?>



a+
google est mon ami quand tu cherches quelque chose demande lui clairement
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

Merci bcp pour ta réponse,
Je vais essayer et te dirai quoi.

Le problème, c'est qu'un mail de confirmation devrait être également envoyé à la personne qui a rempli le formulaire. Peux-tu, as-tu déja fait ça?

Merci,
Davince
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Je passe juste dans le coin pour insister sur le "form mail simple" de Gillardg.
Ce script n'est (je pense) là que pour te donner des pistes, il ne faut en aucun cas l'utiliser ainsi, c'est un gouffre à injections !!
Avec ça n'importe qui peut envoyer des mails à n'importe qui, et en masse !!

Prends donc connaissance des risques encourus en cherchant :
'injection mail php'
'php traitement des formulaires'

Je n'ai pas regardé mais ça devrait te donner de bons résultats.


Cordialement,


Kohntark -
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

Merci Kohntark,

Je vais effectivemment me renseigner avant de faire des bêtises ;-)
As-tu déjà fait des form php plus complexes qui renvoient un mail de confirmation au visiteur?
++


Davince
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Bonjour,
les injections sont possibles dans les champs from et to mais pas dans le subject ni dans le body

dans mon exemple

from est mail_php@example.com
to est fixé dans le script

a+
google est mon ami quand tu cherches quelque chose demande lui clairement
Messages postés
29
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2012

J'ai trouvé un workaround avec un script PHP beaucoup plus simple, donc temporairement on s'en sort, mais je n'arrive pas à trouver la solution avec l'exemple repris dans ce post (voir premier message).

Le but est que les gens remplissent le formulaire et qu'au moment où ils envoient (avec checking du remplissage des champs et de l'adresse mail), un message apparaît sur le site et qu'ils reçoivent un mail de confirmation pour dire que les données du formulaire ont bien été envoyées.

Le problème est que je reçois toujours une page blanche ou "internet explorer (ou firefox) ne peut afficher la page"
image:http://www.paz-a-paz.be/divers/Sans-titre-2.jpg

Dans les grandes lignes, ça paraît juste mais pour certaines partie du script, je crois que je suis à côté de la plaque:
<meta http-equiv="Refresh" content="4; url=Contact_essai.htm">

<?php

$recipientname = "Lieselot Hermans";

$recipientemail = "levhenin@hotmail.com";

$subject = "CONTACT: Online-Form Response for $recipientname";

$autoresponse = "yes";

$autosubject = "Thank you for your mail!";

$automessage = "This is an auto response to let you know that I've successfully received your email sent through the email form. Thanks! I'll get back to you shortly.";

$thanks = "Thank you for contacting me.
I will get back to you as soon as possible.
";
$error_field = "Missing $dcheck[$check].

Please try again...
";

$error_email = "Error, your e-mail address is not correct, please try again...
";?>

<?php
if($_POST['submitform']) {

$text = $HTTP_POST_VARS['text'];
$text1 = $HTTP_POST_VARS['text1'];
$text2 = $HTTP_POST_VARS['text2'];
$text61 = $HTTP_POST_VARS['text61'];
$textarea = $HTTP_POST_VARS['textarea'];
$radio_yes= $HTTP_POST_VARS['radio_yes'];
$radio_no = $HTTP_POST_VARS['radio_no'];

// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
echo "$error_field";
}
}

// check email address
if ((!ereg(".+\@.+\..+", $text61)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $text61))){
echo "$error_email";
else 
{

$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;

// format message
$message = "CONTACT: Online-Form Response for $recipientname:

Subject: $text
Last Name: $text1
First Name: $text2
Email: $text61

News mails? yes: $radio_yes
News mails? no: $radio_no

Comments or Questions: $textarea

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

Browser: $browser
User IP: $ip";

// send mail and print success message
mail($recipientemail,"$subject","$message","From: $text1 $text2 <$text61>");

if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($text61,"$autosubject","$automessage","From: $recipientname <$recipientemail>");
}

echo "$thanks";
}
} 
else{}
?>


que dois-je corriger pour avoir au clic du bouton d'envoi:
*1 checking du remplissage des champs et adresse e-mail ("$error_field", $error_email)
*1 message de confirmation/remerciement à l'écran ($thanks)
*1 mail de confirmation envoyé à l'adresse du visiteur

Merci mille fois,

V.