het lukt mij niet om de captcha code te laten controleren!
zou ziet mijn script eruit
captcha.php
contact.php
zou ziet mijn script eruit
captcha.php
PHP:
<?php
session_start();
$width = 140;
$height = 35;
$im = imagecreate($width, $height);
$bg = imagecolorallocate($im, 0, 0, 0);
// generate random string
$len = 5;
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw123456789';
for ($i = 0; $i < $len; $i++) {
$pos = rand(0, strlen($chars)-1);
$string[$i] = $chars{$pos};
}
for($i=0; $i < $len; $i++){
$string2+=$string[i];
}
$_SESSION['captcha_code'] = md5($string2);
// grid groen
$grid_color = imagecolorallocate($im, 0, 175, 0);
$number_to_loop = ceil($width / 20);
for($i = 0; $i < $number_to_loop; $i++) {
$x = ($i + 1) * 20;
imageline($im, $x, 0, $x, $height, $grid_color);
}
$number_to_loop = ceil($height / 10);
for($i = 0; $i < $number_to_loop; $i++) {
$y = ($i + 1) * 10;
imageline($im, 0, $y, $width, $y, $grid_color);
}
// grit rood
$extra_color = imagecolorallocate($im, 175, 0, 0);
$number_to_loop = ceil($width / 15);
for($i = 0; $i < $number_to_loop; $i++) {
$x = ($i + 1) * 15;
imageline($im, $x, 0, $x, $height, $extra_color);
}
$number_to_loop = ceil($height / 20);
for($i = 0; $i < $number_to_loop; $i++) {
$y = ($i + 1) * 20;
imageline($im, 0, $y, $width, $y, $extra_color);
}
// grit blouw
$extra2_color = imagecolorallocate($im, 0, 0, 255);
$number_to_loop = ceil($width / 25);
for($i = 0; $i < $number_to_loop; $i++) {
$x = ($i + 1) * 25;
imageline($im, $x, 0, $x, $height, $extra2_color);
}
$number_to_loop = ceil($height / 15);
for($i = 0; $i < $number_to_loop; $i++) {
$y = ($i + 1) * 15;
imageline($im, 0, $y, $width, $y, $extra2_color);
}
// random lines groen
$line_color = imagecolorallocate($im, 0, 130, 0);
for($i = 0; $i < 10; $i++) {
$rand_x_1 = rand(0, $width - 1);
$rand_x_2 = rand(0, $width - 1);
$rand_y_1 = rand(0, $height - 1);
$rand_y_2 = rand(0, $height - 1);
imageline($im, $rand_x_1, $rand_y_1, $rand_x_2, $rand_y_2, $line_color);
}
// random lines rood
$line2_color = imagecolorallocate($im, 130, 0, 0);
for($i = 0; $i < 10; $i++) {
$rand_x_1 = rand(0, $width - 1);
$rand_x_2 = rand(0, $width - 1);
$rand_y_1 = rand(0, $height - 1);
$rand_y_2 = rand(0, $height - 1);
imageline($im, $rand_x_1, $rand_y_1, $rand_x_2, $rand_y_2, $line2_color);
}
// random lines blouw
$line3_color = imagecolorallocate($im, 0, 0, 130);
for($i = 0; $i < 10; $i++) {
$rand_x_1 = rand(0, $width - 1);
$rand_x_2 = rand(0, $width - 1);
$rand_y_1 = rand(0, $height - 1);
$rand_y_2 = rand(0, $height - 1);
imageline($im, $rand_x_1, $rand_y_1, $rand_x_2, $rand_y_2, $line3_color);
}
// write the text
$i=0;
while($i < $len){
$kleur1 = rand(150, 255);
$kleur2 = rand(150, 255);
$kleur3 = rand(150, 255);
$text_color = imagecolorallocate($im, $kleur1, $kleur2, $kleur3);
$rand_x = rand($width/6*$i+15, $width/6*$i+15);
$rand_y = rand(0, $height - 15);
imagestring($im, 10, $rand_x, $rand_y, $string[$i], $text_color);
$i++;
}
header ("content-type: image/png");
imagepng($im);
?>
PHP:
?php
session_start();
// Variabelen:
$voornaam = ""; // Naam van de afzender
$achternaam = "";
$adres = "";
$postcode = "";
$woonplaats = "";
$emailadres = ""; // E-mailadres van de afzender
$telefoonnummer = "";
$opmerking = ""; // Tekst van het e-mailbericht
$capcode = "";
$vervuild = FALSE; // FALSE als het formulier geen fouten bevat
$verzonden = FALSE; // TRUE als het e-mailbericht is verzonden
$melding = ""; // String voor (fout)meldingen
// Formulier alleen verwerken als er op een knop met de naam 'submit' is geklikt ...
if (isset($_POST['submit'])) {
// ... en deze knop de waarde 'Verzenden' heeft:
if ($_POST['submit'] == "Verzenden") {
$voornaam = $_POST['v'];
$achternaam = $_POST['n'];
$adres = $_POST['a'];
$postcode = $_POST['p'];
$woonplaats = $_POST['w'];
$emailadres = $_POST['e'];
$telefoonnummer = $_POST['t'];
$opmerking = $_POST['o'];
$capcode = $_POST['captcha'];
// HTML-tags en PHP-code verwijderen:
$voornaam = strip_tags($voornaam);
$achternaam = strip_tags($achternaam);
$adres = strip_tags($adres);
$postcode = strip_tags($postcode);
$woonplaats = strip_tags($woonplaats);
$emailadres = strip_tags($emailadres);
$telefoonnummer = strip_tags($telefoonnummer);
$opmerking = strip_tags($opmerking);
// Spaties en andere witruimte verwijderen uit de naam en het e-mailadres,
// maar niet uit de tekst van het bericht:
$voornaam = trim($voornaam);
$achternaam = trim($achternaam);
$adres = trim($adres);
$postcode = trim($postcode);
$woonplaats = trim($woonplaats);
$emailadres = trim($emailadres);
$telefoonnummer = trim($telefoonnummer);
if (strlen($voornaam) < 1) {
$melding .= "Voer uw <strong>voornaam</strong> in.<br>";
$vervuild = TRUE;
}
if (strlen($achternaam) < 1) {
$melding .= "Voer uw <strong>achternaam</strong> in.<br>";
$vervuild = TRUE;
}
if (strlen($adres) < 0) {
$melding .= "";
$vervuild = TRUE;
}
if (strlen($postcode) < 0) {
$melding .= "";
$vervuild = TRUE;
}
if (strlen($woonplaats) < 0) {
$melding .= "";
$vervuild = TRUE;
}
if (strlen($emailadres) < 1) {
$melding .= "Voer uw <strong>e-mailadres</strong> in.<br> ";
$vervuild = TRUE;
} else {
function is_email($emailadres)
{
// Eerst een snelle controle uitvoeren:
// een e-mailadres moet uit minimaal 7 tekens bestaan:
if (strlen($emailadres) < 7) {
return FALSE;
}
// Daarna een controle met een reguliere expressie uitvoeren:
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $emailadres)) {
return TRUE;
} else {
return FALSE;
}
}
if (!is_email($emailadres)) {
$melding .= "<strong>" . htmlentities($emailadres) . "</strong> is geen geldig e-mailadres.<br>";
$vervuild = TRUE;
}
}
if (strlen($telefoonnummer) < 10) {
$melding .= "Voer uw <strong>telefoonnummer</strong> in.<br>";
$vervuild = TRUE;
}
if (strlen($opmerking) < 10) {
$melding .= "Voer een <strong>vraag/opmerking</strong> van minimaal <strong>10</strong> karakters in.<br>";
$vervuild = TRUE;
}
if (md5($capcode) != $_SESSION['captcha_code']){
$melding .= "Voer de <strong>code</strong> in. De code is <strong>hoofdletters</strong> gevoelig.<br>";
$vervuild = TRUE;
}
// E-mailbericht verzenden als de gegevens niet vervuild zijn:
if (!$vervuild) {
// Constante voor het e-mailadres van de ontvanger:
define("AAN", "xxx@xxxxxxxxxx.nl");
// Constante voor het onderwerp:
define("ONDERWERP", "Contactformulier website");
// Headers met de naam en het e-mailadres van de gebruiker:
$headers = "From: \"$voornaam $achternaam\" <$emailadres>\r\n";
$headers .= "Reply-To: \"$voornaam $achternaam\" <$emailadres>\r\n";
// Naam en e-mailadres toevoegen aan de tekst:
$tekst .= "\r\nnaam: $voornaam $achternaam";
$tekst .= "\r\nadres: $adres";
$tekst .= "\r\n $postcode $woonplaats";
$tekst .= "\r\nemail: $emailadres";
$tekst .= "\r\ntelefoon: $telefoonnummer";
$tekst .= "\r\nopmerking:";
$tekst .= "\r\n" ;
$tekst .= "\r\n$opmerking";
if (mail(AAN, ONDERWERP, $tekst, $headers)) {
$verzonden = TRUE;
$melding = "Hartelijk dank voor uw reactie. ";
$melding .= "U ontvangt binnen twee werkdagen antwoord. ";
} else {
$verzonden = FALSE;
$melding = "Uw bericht kon niet worden verzonden. ";
$melding .= "Wijzig het e-mailadres of probeer het later nog een keer. ";
}
}
}
}
// Standaardtekst voor instructies instellen als er geen foutmeldingen zijn:
if ($melding == "") {
$melding = "Voer eerst uw voornaam, achternaam, e-mailadres en telefoonnummer in, met evt. uw adres.<br> ";
$melding .= "Typ daarna uw vraag of omerking in het grote vak, tik de code over en klik op Verzenden.";
}
?>
<hr><p><font color="darkblue"><?php echo $melding; ?></font></p><hr>
<?php
// Formulier weergeven als de gegevens vervuild zijn
// of het e-mailbericht niet verzonden is:
if ($vervuild or !$verzonden) {
$voornaam = htmlentities($voornaam);
$achternaam = htmlentities($achternaam);
$adres = htmlentities($adres);
$postcode = htmlentities($postcode);
$woonplaats = htmlentities($woonplaats);
$emailadres = htmlentities($emailadres);
$telefoonnummer = htmlentities($telefoonnummer);
$opmerking = htmlentities($opmerking);
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<table>
<TD WIDTH="15"><td><label for="v">Voornaam:*</label><td>
<input accesskey="v" id="v" name="v" value="<?php echo $voornaam; ?>"><td>
<label for="n">Achternaam*:</label><td>
<input accesskey="n" id="n" name="n" value="<?php echo $achternaam; ?>"><td>
</td></tr>
<tr>
<td><td><label for="a">Adres:</label><td>
<input accesskey="a" id="a" name="a" value="<?php echo $adres; ?>"><td>
</td></tr>
<tr>
<td><td><label for="p">Postcode:</label><td>
<input accesskey="p" id="p" name="p" value="<?php echo $postcode; ?>"><td>
<label for="w">Woonplaats:</label><td>
<input accesskey="w" id="w" name="w" value="<?php echo $woonplaats; ?>"><td>
</td></tr>
<tr><td><td>
<label for="e">Emailadres:*</label><td>
<input accesskey="e" id="e" name="e" value="<?php echo $emailadres; ?>"><td>
<label for="t">Telefoonnummer:*</label><td>
<input accesskey="t" id="t" name="t" value="<?php echo $telefoonnummer; ?>"><td>
</td></tr>
<td><td colspan="4" >
Vraag of opmerking* <br>
<textarea accesskey="o" cols="60" id="o" name="o" rows="4"><?php echo $opmerking; ?></textarea></td>
</td></tr>
<td><td colspan="4" >
Vul hier de code in:*
<tr><td><td><img src="captcha.php" alt="captcha" />
<td>
<input type="text" name="captcha" />
</td></tr>
</table>
<input class="knop" name="submit" type="submit" value="Verzenden">
<input class="knop" name="submit" type="submit" value="Wissen">
<?php
}
?>
Laatst bewerkt door een moderator: