Mailform toevoegingen als anti spam script en foutmeldingen.
Hoi,
Ik heb een vraagje over mijn eigengemaakte mailform (Ben er trots op dus nie afkraken :P)
Ben nog niet zo bekend met PHP dus een paar waarschijnlijk simpele vraagjes:
1 Hoe kan ik per veld een foutmelding geven? (dus: Ongeldige e-mail adres, u bent uw naam vergeten, u moet wel een bericht invoeren, etc.
2 Hoe kan ik er voor zorgen dat deze foutmelding in de zelfde html style als de form komt?
(nu komt ie op een blanco pagina ergens links bovenin)
3 Hoe kan ik een antispam script plaatsen en welke?
4 Hoe kan ik mijn e-mail " hidden " krijgen.
En voor de mensen die nog niet denken... jeeeeeeetje wat een vragen....
5 Kan iemand nog andere foutjes vinden in dit script?
Code (php)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/* instellingen */
$jouw_adres = "[email protected]";
$onderwerp = "Contact form";
/* einde instellingen */
if($_REQUEST['verzend'])
{
$naam = $_REQUEST['naam'];
$email = $_REQUEST['email'];
$opmerkingen = $_REQUEST['opmerkingen'];
$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;
/* controleer emailadres */
$error = false;
if ((!ereg(".+\@.+\..+", $email)) || (!ereg("^[[email protected]]+$", $email))){
$error .= "U heeft geen of een ongeldig E-mail adres Ingevoerd!<br>";}
/* als er problemen zijn met het emailadres */
if($error)
{
echo $error;
}
else
{
/* als er geen fouten zijn */
/* maak de boodschap */
$boodschap = "reactie met je mailform:\n";
$boodschap .= "naam: $naam\n";
$boodschap .= "email: $email\n";
$boodschap .= "opmerkingen: $opmerkingen\n";
$boodschap .= "-----------------------------\n";
$boodschap .= "browser: $browser\n";
$boodschap .= "IP adres: $ip\n";
/* verstuur de mail met de PHP functie 'mail()' */
mail($jouw_adres,"$onderwerp","$boodschap","From: $naam <$email>" . "Reply-To: $naam <$email>");
echo "Bedankt voor uw bericht!";
}
}
else {
/* als er niks naar het script gepost wordt laat dan het formulier zijn */
?>
<html>
<head><title></title>
<style type="text/css">
<!--
.style2 {
font-size: 16px
}
.style4 {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
}
.style5 {
font-size: 12px;
color: #FFFFFF;
}
.style6 {
font-size: 16px;
font-family: Arial, Helvetica, sans-serif;
}
.style7 {font-family: "Times New Roman", Times, serif}
.style8 {
font-size: 16px;
font-family: "Times New Roman", Times, serif;
color: #FFFFFF;
}
.style9 {
color: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.style13 {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
color: #000000;
}
a:active {
text-decoration: none;
}
h1 {
font-size: 12px;
color: #000000;
}
.style15 {font-size: 14px; }
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<pre>
<form action="<?php echo $PHP_SELF; ?>" method="POST"><table width="312" border="0" align="center" bordercolor="#FFFFFF" bgcolor="#BF0000">
<tr><th height="104" colspan="2" bgcolor="#FFFFFF" scope="col"><div align="left"><img src="../Logo/logobanner.png" width="100" height="79"></div></th><th height="104" bgcolor="#FFFFFF" scope="col"><span class="style13">Voor vragen en opmerking vul dan dit formulier in en u krijgt dan zo spoedig mogelijk een reactie!</span></th></tr><tr>
<th height="31" colspan="2" scope="col"><p align="left" class="style6 style5 style13">Naam: </p></th>
<th width="178" scope="col"><p align="centre"><input type="text" name="naam"></p></th>
</tr>
<tr>
<th height="31" colspan="2" scope="col"><p align="left" class="style9">Email: </th>
<th width="178" scope="row"><p align="centre"> <input type="text" name="email"></p></th>
</tr>
<tr>
<th height="78" colspan="2" scope="row"><div align="left" class="style7 style2"><p class="style9">Bericht: </p></div></th>
<th width="178" scope="row"><p align="centre"><textarea name="opmerkingen" rows="4" wrap="hard"></textarea></p></th>
</tr>
<tr>
<th width="61" height="36" scope="row"><p><input type="submit" value="verzend" name="verzend"></th>
<th width="51" scope="row"><input type="reset" value="reset"></p></th>
<th height="36" scope="row"><span class="style2 style4"><span class="style15"><a href="index.htm" class="style8">T5P.nl</a></span></span></th>
</tr>
</table>
</form>
</pre>
</body>
</html>
<? /* vergeet het else statement niet af te sluiten */ } ?>
/* instellingen */
$jouw_adres = "[email protected]";
$onderwerp = "Contact form";
/* einde instellingen */
if($_REQUEST['verzend'])
{
$naam = $_REQUEST['naam'];
$email = $_REQUEST['email'];
$opmerkingen = $_REQUEST['opmerkingen'];
$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;
/* controleer emailadres */
$error = false;
if ((!ereg(".+\@.+\..+", $email)) || (!ereg("^[[email protected]]+$", $email))){
$error .= "U heeft geen of een ongeldig E-mail adres Ingevoerd!<br>";}
/* als er problemen zijn met het emailadres */
if($error)
{
echo $error;
}
else
{
/* als er geen fouten zijn */
/* maak de boodschap */
$boodschap = "reactie met je mailform:\n";
$boodschap .= "naam: $naam\n";
$boodschap .= "email: $email\n";
$boodschap .= "opmerkingen: $opmerkingen\n";
$boodschap .= "-----------------------------\n";
$boodschap .= "browser: $browser\n";
$boodschap .= "IP adres: $ip\n";
/* verstuur de mail met de PHP functie 'mail()' */
mail($jouw_adres,"$onderwerp","$boodschap","From: $naam <$email>" . "Reply-To: $naam <$email>");
echo "Bedankt voor uw bericht!";
}
}
else {
/* als er niks naar het script gepost wordt laat dan het formulier zijn */
?>
<html>
<head><title></title>
<style type="text/css">
<!--
.style2 {
font-size: 16px
}
.style4 {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
}
.style5 {
font-size: 12px;
color: #FFFFFF;
}
.style6 {
font-size: 16px;
font-family: Arial, Helvetica, sans-serif;
}
.style7 {font-family: "Times New Roman", Times, serif}
.style8 {
font-size: 16px;
font-family: "Times New Roman", Times, serif;
color: #FFFFFF;
}
.style9 {
color: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.style13 {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
color: #000000;
}
a:active {
text-decoration: none;
}
h1 {
font-size: 12px;
color: #000000;
}
.style15 {font-size: 14px; }
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<pre>
<form action="<?php echo $PHP_SELF; ?>" method="POST"><table width="312" border="0" align="center" bordercolor="#FFFFFF" bgcolor="#BF0000">
<tr><th height="104" colspan="2" bgcolor="#FFFFFF" scope="col"><div align="left"><img src="../Logo/logobanner.png" width="100" height="79"></div></th><th height="104" bgcolor="#FFFFFF" scope="col"><span class="style13">Voor vragen en opmerking vul dan dit formulier in en u krijgt dan zo spoedig mogelijk een reactie!</span></th></tr><tr>
<th height="31" colspan="2" scope="col"><p align="left" class="style6 style5 style13">Naam: </p></th>
<th width="178" scope="col"><p align="centre"><input type="text" name="naam"></p></th>
</tr>
<tr>
<th height="31" colspan="2" scope="col"><p align="left" class="style9">Email: </th>
<th width="178" scope="row"><p align="centre"> <input type="text" name="email"></p></th>
</tr>
<tr>
<th height="78" colspan="2" scope="row"><div align="left" class="style7 style2"><p class="style9">Bericht: </p></div></th>
<th width="178" scope="row"><p align="centre"><textarea name="opmerkingen" rows="4" wrap="hard"></textarea></p></th>
</tr>
<tr>
<th width="61" height="36" scope="row"><p><input type="submit" value="verzend" name="verzend"></th>
<th width="51" scope="row"><input type="reset" value="reset"></p></th>
<th height="36" scope="row"><span class="style2 style4"><span class="style15"><a href="index.htm" class="style8">T5P.nl</a></span></span></th>
</tr>
</table>
</form>
</pre>
</body>
</html>
<? /* vergeet het else statement niet af te sluiten */ } ?>
Dankje wel!
De lay out is te vinden op http://www.t5p.nl/contact.php
zo..
Gewijzigd op 01/01/1970 01:00:00 door Stef
maar dan zonder de punten
dat maakt het een stuk overzichtelijker en is het makkelijker om je te helpen
Gewijzigd op 01/01/1970 01:00:00 door Terry
Gewijzigd op 01/01/1970 01:00:00 door stef
Is dit goed geplaatst?
Bumpen::
SanThe.
2. zie 1
3. Eerst moet je even bedenken hoe je spam tegen wilt gaan. Een plaatje
(captcha), een gewone vraag, een kleurtje?
4. <input type="hidden" />, maar waarom wil je het e-mail adres in een hidden field hebben? Dan kan iemand toch nooit het formulier invullen
5.1 $_REQUEST is achterhaald. Tegenwoordig gebruiken we gewoon $_POST, $_GET of $_COOKIE
5.2 $browser = $HTTP_USER_AGENT; . Gebruik Superglobals, dus $_SERVER['HTTP_USER_AGENT'].
5.3 Voor het IP geldt hetzelfde.
6. Het is zo goed geplaatst, maar je moet niet bumpen. Dat is het 2x achter elkaar plaatsen van een post in je eigen topic binnen 24 uur.
if($_REQUEST['verzend']) kun je vervangen voor if($_SERVER['REQUEST_METHOD'] == "POST").
Je moet je formulier ín de HTML controleren, dus niet er boven. Zo komen de errors ook in de HTML te staan en dus in dezelfde stijl.
Floodcontrole kan d.m.v. cookies. Zie: setcookie().
$_REQUEST kun je vervangen voor $_POST.
Variabelen buiten de quotes, a.u.b.
Zet een if constructie om je mail() functie, zo kun je controleren of de mail verstuurd is of niet.
I.p.v. $HTTP_USER_AGENT gebruik je: $_SERVER['HTTP_USER_AGENT']. Datzelfde geldt voor $REMOTE_ADDR, wordt: $_SERVER['REMOTE_ADDR'].
Lees even de reacties van hiervoor.. Een aantal dingen zijn namelijk al genoemd.
@hieronder
You're absolutly right!
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
@PHP Newbie: bekijk even de postdata : ).