Bonjour,

Je me pose plusieurs questions à l'égard du script PHP/HTML plus bas (depuis Alice) :

1. Je ne comprends pas pourquoi s'affiche systématiquement Missing fields ! après l'envoi du formulaire, que tous les champs soient renseignés ou non. Par ailleurs le message du nouveau formulaire contient :
Provenance : http://www.xxx.fr/contact.php3
Adresse IP : xxx.xxx.xx.xxx,
Navigateur : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Nom :
E-mail :
Message :
2. Dans le cas où le message du visiteur est bien envoyé, est-il possible de le lui spécifier puis de rediriger automatiquement ce dernier vers la page d'accueil de mon site ?
3. Comment ce script peut-il être optimisé (erreurs, failles, allègements sémantique et syntaxique, etc) ?

Merci d'avance à ceux qui prendront le temps de répondre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?".">"; ?>
<!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
<head>
  <title>Contact</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
 
<body>
 
<?php
function formulaire($name="",$email="",$subject="",$message="") {
?>
 
<div align="center">
 
<p>&nbsp;</p>
 
<form action="<?php echo $PHP_SELF ?>" method="post">
  <table>
    <tr><th colspan="2">Send an e-mail to <a href="http://www.moi.fr">Damien</a></th></tr>
    <tr><td>Name</td><td><input type="text" name="name" size="68" value="<?php echo trim(htmlentities($name)) ?>" /></td></tr>
    <tr><td>Email</td><td><input type="text" name="email" size="68" value="<?php echo trim(htmlentities($email)) ?>" /></td></tr>
    <tr><td>Subject</td><td><input type="text" name="subject" size="68" value="<?php echo trim(htmlentities($subject)) ?>" /></td></tr>
    <tr><td>Message</td><td><textarea name="message" rows="10" cols="70" wrap="virtual"><?php echo trim(htmlentities($message)) ?></textarea></td></tr>
    <tr><td>&nbsp;</td><td><input type="submit" value="Send"/></td></tr>
  </table>
</form>
 
<?php
}
 
if(!isset($name)) {formulaire();}
 
else {
  $Vname=trim(htmlentities($_POST["name"]));
  $Vemail=trim(htmlentities($_POST["email"]));
  $Vsubject=trim(htmlentities($_POST["subject"]));
  $Vmessage=trim(htmlentities($_POST["message"]));
  $recipient='mon@email.fr';
  $msg="Provenance : $HTTP_REFERER\n";
  $msg.="Adresse IP : $REMOTE_ADDR,\n";
  $msg.="Navigateur : $HTTP_USER_AGENT\n";
  $msg.="Nom : $Vname\nE-mail : $Vemail\nMessage : $Vmessage\n";
  if (empty($Vname) || empty($message) || empty($email) || empty($subject)) {
    echo "<p>Missing fields !</p>";
    $error=1;
  }
 
  if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*\\.[a-z]{2,4}$",$Vemail) && ($error<>1)){
    echo "<p>Email is not valid.</p>";
    $error=1;
  }
 
  if ($error==1) {
    formulaire($name,$email,$subject,$msg);
  }
 
  else {
    if (mail($recipient,$Vsubject,$msg)) {
      echo "<p>Your message has been sent.</p>\n" ;
      echo "Return to <a href=\"index.html\">homepage</a>";
    }
    else {
      echo "<p>An error occured while sending your message.</p>\n";
    } 
  }
}
?>
 
</div>
</body>
</html>