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:
A voir également:
Données d'un formulaire envoyées vers e-mail via PHP
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.
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?
++
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.
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