Captcha in gastenboek zetten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Zwart

Jeroen Zwart

08/03/2011 18:18:33
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
 
PHP hulp

PHP hulp

28/03/2024 11:28:06
 
Kevin Blokzijl

Kevin Blokzijl

08/03/2011 18:19:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Code in Codetags, dan is het wat makkelijker te lezen
 
Jeroen Zwart

Jeroen Zwart

11/03/2011 10:58:22
Quote Anchor link
Kan niemand mij hierbij helpen?
 
Jeroen Zwart

Jeroen Zwart

16/03/2011 11:28:01
Quote Anchor link
Probleem is opgelost inmiddels.
 
Stephan G

Stephan G

16/03/2011 11:34:45
Quote Anchor link
Je voert je query al uit voordat je controleert of de Captcha valide is.
 
- SanThe -

- SanThe -

16/03/2011 11:38:07
Quote Anchor link
Regel 18 en 19 zijn nutteloos waardoor het script lek is => sql-injection.
Gewijzigd op 16/03/2011 11:39:43 door - SanThe -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.