Bij een vorige website van mij heeft een formulier met captcha-code prima gewerkt. Bij een nieuwe site gebruik ik hetzelfde script maar het werkt nu niet. Maar ik krijg enkel de laatste alert over de verkeerde code te zien, ook al wordt de oplossing in het invulveld juist getypt. Wat kan er mis zijn?
invulformulier.php<form id="form1" name="form1" method="post" action="contact/verwerk.php" enctype="multipart/form-data" onSubmit="return verplicht();">
<p align="center"> <br>
<table width="95%" border="1" align="left" cellpadding="0" cellspacing="0" bordercolor="#c94d7f">
<tr>
<td><table width="100%" border="0" align="left" cellpadding="0" cellspacing="0" ><tr>
<td valign="bottom"><table width="100%" border="0" align="left" cellpadding="0" cellspacing="0" >
<tr>
<td height="20"><div align="right"></div></td>
<td height="20" > </td>
<td height="20" colspan="3" align="center"> </td>
</tr>
<tr>
<td height="30"><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Uw naam *</font></div></td>
<td height="30" > </td>
<td height="30" colspan="3"><input name="voornaam" type="text" class="tekstveld" id="voornaam" value="<?php echo($voornaam);?>
" size="51"/>
</td>
</tr>
<tr>
<td height="30" ><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Uw emailadres *</font></div></td>
<td height="30" > </td>
<td height="30" colspan="3"><input name="emailadres" type="text" id="emailadres" value="<?php echo($emailadres);?>
" size="51"/>
</td>
</tr>
<tr>
<td height="30" ><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Uw telefoon</font><font face="Helvetica, Arial, sans-serif" size="2" color="white"> *</font></div></td>
<td height="30" > </td>
<td height="30" colspan="3"><input name="telefoon" type="text" id="telefoon" value="<?php echo($telefoon);?>
" size="51"/>
</td>
</tr>
<tr>
<td height="20" > </td>
<td width="14" height="20" > </td>
<td height="20" colspan="3"> </td>
</tr>
<tr>
<td height="30" ><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Onderwerp *</font></div></td>
<td height="30" > </td>
<td height="30" colspan="3"><input name="onderwerp" type="text" id="onderwerp" value="<?php echo($onderwerp);?>
" size="51"/></td>
</tr>
<tr>
<td width="214" height="5"></td>
<td width="14" height="5"></td>
<td width="154" height="5"></td>
<td width="224" height="5"></td>
<td width="190" height="5"></td>
</tr>
<tr>
<td width="214" height="7"><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Uw bericht *</font></div></td>
<td width="14" height="0"> </td>
<td height="0" colspan="3"><textarea name="bericht" cols="40" rows="7" id="bericht" style="width:90%" value="<?php echo nl2br($bericht);?>
"></textarea></td>
</tr>
<tr>
<td width="214" height="20"> </td>
<td width="14" height="20"> </td>
<td height="20" colspan="3"> </td>
</tr>
<tr>
<td width="214" height="15" ><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Anti-spam *</font></div></td>
<td width="14" height="0" ></td>
<td width="154" height="0" valign="middle"><img src="http://www.de-dam.be/captcha/captcha.php" width="130" height="21" /></td>
<td width="224" valign="middle"><input type="text" name="CAPTCHA" /></td>
<td width="190" height="6" align="left" valign="middle">
<?php if($_SESSION['CAPTCHA'] != $_POST['CAPTCHA']) { echo 'verkeerde code'; } else (" <center> <input type=\"submit\" name=\"verzenden\" id=\"verzenden\" value=\"Verzenden\" /> </center>"); ?>
</td>
</tr>
<tr>
<td height="20" > </td>
<td width="14" height="20" ></td>
<td height="20" colspan="3" valign="middle"> </td>
</tr>
<tr>
<td colspan="5"></td>
</tr>
</table>
</tr>
</table></td>
</tr>
</table>
</p>
<center>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td height="20"> </td>
</tr>
</tbody>
</table>
<p>
<input type="submit" name="verzenden" id="verzenden" value="Verzenden" />
</p>
</center>
</form>verwerk.php(ik krijg enkel de laatste alert over de verkeerde code te zien, ook al wordt de oplossing in het invulveld juist getypt)
<?phpsession_start();?>
<!DOCTYPE html>
<html lang="en">
<head></head>
<body ontouchstart="">
<?php stripslashes($_POST['text']);if (get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST);}$voornaam = mysql_real_escape_string($_POST['voornaam']); $emailadres = mysql_real_escape_string($_POST['emailadres']); $telefoon = mysql_real_escape_string($_POST['telefoon']); $onderwerp = mysql_real_escape_string($_POST['onderwerp']); $bericht = mysql_real_escape_string($_POST['bericht']); echo ""; if(!strlen($_POST['voornaam'])) { echo ' Gelieve uw naam in te vullen.<br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } elseif(!strlen($_POST['emailadres'])) { echo ' Gelieve uw emailadres in te vullen.<br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } elseif(!preg_match("/.+@[a-zA-Z0-9_-]+..+/", $_POST['emailadres'])) { echo ' U hebt geen geldig emailadres ingevuld.<br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>';} elseif(!strlen($_POST['onderwerp'])) { echo ' Gelieve een onderwerp in te vullen.<br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } elseif(!strlen($_POST['bericht'])) { echo ' Gelieve een bericht te schrijven. <br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } elseif(!strlen($_POST['CAPTCHA'])) { echo ' Gelieve de anti-spamcode in te vullen. <br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } elseif ($_SESSION['CAPTCHA'] != $_POST['CAPTCHA']) { echo ' <b>Je hebt de verkeerde code opgegeven!</b><br><br>'; echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; } else {$voornaam=$_POST['voornaam'];$emailadres=$_POST['emailadres'];$telefoon=$_POST['telefoon'];$onderwerp=$_POST['onderwerp'];$bericht=$_POST['bericht'];$datum = date("d-m-Y H:i");$to = 'info@website.be' . ', ';$subject = "onderwerp";$mail_body = "<html><head><title>" . $onderwerp . "</title></head><body>hier alle content</body></html>";$headers = 'MIME-Version: 1.0' . "\r\n";$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";$headers .= 'From: Website <info@website.be>' . "\r\n";mail($to, $subject, $mail_body, $headers);$to = " ". $emailadres . " ";$subject = 'uw ingestuurd bericht';$mail_body = "<html><head> <title>" . $onderwerp . "</title></head><body>Uw bericht is met succes verzonden en zal zo snel mogelijk bekeken worden. </body></html>";$headers = 'MIME-Version: 1.0' . "\r\n";$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";$headers .= 'From: <info@website.be>' . "\r\n";mail($to, $subject, $mail_body, $headers);?>
<meta http-equiv="REFRESH" content="5;URL=../invulformulier.php">
<p class="titel">Bericht verstuurd</p>
<?php echo "Deze vraag is met succes doorgestuurd,<br>en zal snel bekeken worden."; ?>
<br><br>
<?phpecho"U wordt zometeen teruggestuurd."; ?>
</body>
</html>
<?php}?>
captcha.php
<?php session_start(); header('content-type: image/png'); $numbers = array(); $numbers[] = rand(1, 9); $numbers[] = rand(1, 9); if(rand(0, 1) == 0) { $_op = '+'; $code = strval($numbers[0]) .' + ' .strval($numbers[1]) .' ='; $_SESSION['CAPTCHA'] = $numbers[0] + $numbers[1]; } else { $_op = '*'; $code = strval($numbers[0]) .' x ' .strval($numbers[1]) .' ='; $_SESSION['CAPTCHA'] = $numbers[0] * $numbers[1]; } session_write_close(); $font = dirname(__FILE__) .'/fonts/arial.ttf'; $width = 16; $height = 20; $code_length = 7; $image_height = $height + 2; $image_width = $width * $code_length + 20; $im = imagecreatetruecolor($image_width, $image_height); $white = imagecolorallocate($im, 255, 255, 204); imagefill($im, 0, 0, $white); $theme = array(); $theme[] = array('CHAR_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ), 'BG_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ) ); $theme[] = array('CHAR_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ), 'BG_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ) ); $theme[] = array('CHAR_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ), 'BG_COLOR' => array('R' => array(204, 204), 'G' => array(0, 0), 'B' => array(0, 0) ) ); $pos_x = 5; $pos_y = 20; $random = rand(0, (count($theme) - 1) ); $angle = 0; $size = 16; for($i = 0, $count = strlen($code); $i < $count; $i++) { $color = imagecolorallocate($im, rand($theme[$random]['CHAR_COLOR']['R'][204], $theme[$random]['CHAR_COLOR']['R'][1]), rand($theme[$random]['CHAR_COLOR']['G'][0], $theme[$random]['CHAR_COLOR']['G'][1]), rand($theme[$random]['CHAR_COLOR']['B'][0], $theme[$random]['CHAR_COLOR']['B'][1]) ); imagettftext($im, $size, $angle, $pos_x, $pos_y, $color, $font, $code{$i}); $pos_x += $width + 1; } imagepng($im); imagedestroy($im); ?>
Wat ontbreekt er of is er fout?