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)
<?php
session_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>
<?php
echo"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?