Captcha in gastenboek zetten
Ik heb een gastenboek, waarin nogal wat spam komt. Daarom wil ik captcha erin zetten. Het is bijna allemaal gelukt, zoals het captcha-plaatje enzo. Maar als je dan de code niet (goed) overtypt, wordt het bericht toch geplaatst (hij geeft wel aan dat de code niet goed is)... Hoe kan ik ervoor zorgen dat het bericht dan niet wordt geplaatst?
Dit is de (belangrijkste) code van toevoegen.php:
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
135
136
137
138
139
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
135
136
137
138
139
<?php
define("GB_SYS", true);
// Including the config
require_once("config.inc.php");
// Getting the action
$action = gb_get('action', 'x');
if($action == 'toevoegen') {
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = gb_input($_POST['email']);
$naam = gb_input($_POST['name']);
$bericht = gb_input($_POST['msg']);
mysql_real_escape_string($name);
mysql_real_escape_string($bericht);
if(gb_checkemail($email) && strlen($email) < 256) {
if(strlen($naam) < 51) {
// preg_match("/^[a-zA-Z]+$/", $naam) &&
$naam = str_replace("'", '"', $naam);
$bericht = str_replace("'", '"', $bericht);
$bericht = str_replace("kanker", 'super', $bericht);
if (strlen($_POST['hidden_field']) > 0) { //als de lengte van de waard in hidden field groter is dan nul (dus niet leeg)
// veld is ingevuld bannen die hap
}
else {
// ga door met de rest
}
if(strlen($bericht) < 65536) {
$dag = (strlen(date("j")) == 1 ? 0 : '');
$datum = $dag.date("j/m/y H:i:s");
$query = mysql_query ("INSERT INTO ".$prefix."berichten (naam, email, bericht, datum) VALUES ('".$naam."', '".$email."', '".$bericht."', '".$datum."')");
if (md5($_POST['captcha_code']) == $_SESSION['captcha']) {
//code als captcha goed is overgetypt
} else {
die2('De code is niet goed.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
if($query) {
header('Location: gastenboek.php');
}
else {
print 'Er is iets misgegaan bij het toevoegen van je bericht. Neem contact op met de webmaster.';
}
} else {
die2('Je bericht is te lang.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Vul een geldige naam in.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Vul een geldig e-mailadres in.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Hacking attempt.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
}
else {
?>
<form action="?action=toevoegen" method="post">
Voornaam<font color="#FF0000">*</font>: <br />
<input type="text" name="name" maxlength="50"><br />
Email<font color="#FF0000">*</font>: (niet zichtbaar)<br />
<input type="text" name="email" maxlength="255"><br />
Bericht<font color="#FF0000">*</font>:<br />
<textarea name="msg" cols="70" rows="20" maxlength="65535"></textarea><br />
<script type="text/javascript" />
function change_captcha() {
var captcha = document.images.captcha
var src = captcha.src.split('?');
captcha.src = src[0] + '?' + Math.random();
}
</script>
<input type="button" onclick="change_captcha()" value="Ander plaatje" />
<img name="captcha" src="captcha.php" alt="captcha-plaatje" /><br />
<input type="text" name="captcha_code" /><br />
Velden met een <font color="#FF0000">*</font> zijn verplicht.<br />
<input type="text" name="hiddenfield" style="visibility: hidden;"><br/>
<input type="submit" value="Toevoegen">
</form>
<?php
}
?>
define("GB_SYS", true);
// Including the config
require_once("config.inc.php");
// Getting the action
$action = gb_get('action', 'x');
if($action == 'toevoegen') {
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = gb_input($_POST['email']);
$naam = gb_input($_POST['name']);
$bericht = gb_input($_POST['msg']);
mysql_real_escape_string($name);
mysql_real_escape_string($bericht);
if(gb_checkemail($email) && strlen($email) < 256) {
if(strlen($naam) < 51) {
// preg_match("/^[a-zA-Z]+$/", $naam) &&
$naam = str_replace("'", '"', $naam);
$bericht = str_replace("'", '"', $bericht);
$bericht = str_replace("kanker", 'super', $bericht);
if (strlen($_POST['hidden_field']) > 0) { //als de lengte van de waard in hidden field groter is dan nul (dus niet leeg)
// veld is ingevuld bannen die hap
}
else {
// ga door met de rest
}
if(strlen($bericht) < 65536) {
$dag = (strlen(date("j")) == 1 ? 0 : '');
$datum = $dag.date("j/m/y H:i:s");
$query = mysql_query ("INSERT INTO ".$prefix."berichten (naam, email, bericht, datum) VALUES ('".$naam."', '".$email."', '".$bericht."', '".$datum."')");
if (md5($_POST['captcha_code']) == $_SESSION['captcha']) {
//code als captcha goed is overgetypt
} else {
die2('De code is niet goed.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
if($query) {
header('Location: gastenboek.php');
}
else {
print 'Er is iets misgegaan bij het toevoegen van je bericht. Neem contact op met de webmaster.';
}
} else {
die2('Je bericht is te lang.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Vul een geldige naam in.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Vul een geldig e-mailadres in.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
} else {
die2('Hacking attempt.<br /><br /><a href="http://www.warffumontour.nl/toevoegen.php">Vorige pagina</a>');
}
}
else {
?>
<form action="?action=toevoegen" method="post">
Voornaam<font color="#FF0000">*</font>: <br />
<input type="text" name="name" maxlength="50"><br />
Email<font color="#FF0000">*</font>: (niet zichtbaar)<br />
<input type="text" name="email" maxlength="255"><br />
Bericht<font color="#FF0000">*</font>:<br />
<textarea name="msg" cols="70" rows="20" maxlength="65535"></textarea><br />
<script type="text/javascript" />
function change_captcha() {
var captcha = document.images.captcha
var src = captcha.src.split('?');
captcha.src = src[0] + '?' + Math.random();
}
</script>
<input type="button" onclick="change_captcha()" value="Ander plaatje" />
<img name="captcha" src="captcha.php" alt="captcha-plaatje" /><br />
<input type="text" name="captcha_code" /><br />
Velden met een <font color="#FF0000">*</font> zijn verplicht.<br />
<input type="text" name="hiddenfield" style="visibility: hidden;"><br/>
<input type="submit" value="Toevoegen">
</form>
<?php
}
?>
Gewijzigd op 08/03/2011 18:21:43 door Jeroen Zwart
Kan niemand mij hierbij helpen?
Probleem is opgelost inmiddels.
Je voert je query al uit voordat je controleert of de Captcha valide is.
Gewijzigd op 16/03/2011 11:39:43 door - SanThe -