Contact Formulier + CAPTCHA V2
Auteur: RdR - 10 mei 2005 - 15:15 - Gekeurd door: Mokka - Hits: 85057 - Aantal punten: 4.57 (35 stemmen)
Omdat ik veel emails/vragen kreeg of ik ook de CAPTCHA erook bij wou toevoegen heb ik besloten om het oude script te herschrijven en CAPTCHA eraan toe te voegen.
Verbeteringen zijn altijd welkom.
Features:
- CAPTCHA
- Anti Spam
- Kopie van email naar Verstuurder
- Email Checker
- xHTML valid
- CSS valid
Installatie:
De variabelen in het configuratie gedeelte wijzigen en de bestanden uploaden,
vergeet het font arial.ttf in een map fonts te zetten!
Bestanden:
- contact.php
- captcha.php
- style.css
- fonts/arial.ttf (
Hier te vinden )
Code:
contact.php
<?php
############################################
# Filename : contact.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
ini_set('display_errors', 1);
error_reporting(E_ALL);
ob_start();
session_start();
// Config Gedeelte
$cfg['url'] = "http://www.uwwebsite.nl";// Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = "Uw naam"; // Webmaster naam
$cfg['email'] = "uw email adres"; // Webmaster E-mail
$cfg['spam'] = 10; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$cfg['text'] = TRUE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['input'] = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['HTML'] = TRUE; // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg['CAPTCHA'] = TRUE; // CAPTCHA ( TRUE voor aan, FALSE voor uit )
// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email))
{
return TRUE;
}
return FALSE;
}
$formulier = TRUE;
if(!isset($_COOKIE['formulier']))
{
if(isset($_POST['wis']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
foreach($_POST as $key => $value)
{
unset($value);
}
header("Location: ".$_SERVER['PHP_SELF']."");
}
if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
$aFout = array();
$naam = trim($_POST['naam']);
$email = trim($_POST['email']);
$onderwerp = trim($_POST['onderwerp']);
$bericht = trim($_POST['bericht']);
if($cfg['CAPTCHA'])
{
$code = $_POST['code'];
}
if(empty($naam) || (strlen($naam) < 3) || eregi("[<>]", $naam) )
{
$aFout[] = "Er is geen naam ingevuld.";
unset($naam);
$fout['text']['naam'] = TRUE;
$fout['input']['naam'] = TRUE;
}
if(empty($email))
{
$aFout[] = "Er is geen e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
elseif(checkmail($email) == 0)
// Wanneer je PHP 5.2 > gebruikt
//elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$aFout[] = "Er is geen correct e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
if(empty($onderwerp))
{
$aFout[] = "Er is geen onderwerp ingevuld.";
unset($onderwerp);
$fout['text']['onderwerp'] = TRUE;
$fout['input']['onderwerp'] = TRUE;
}
if(empty($bericht))
{
$aFout[] = "Er is geen bericht ingevuld.";
unset($bericht);
$fout['text']['bericht'] = TRUE;
$fout['input']['bericht'] = TRUE;
}
if($cfg['CAPTCHA'])
{
if(strtoupper($code) != $_SESSION['captcha_code'])
{
$aFout[] = "Er is geen correcte code ingevuld.";
$fout['text']['code'] = TRUE;
$fout['input']['code'] = TRUE;
}
}
if(!$cfg['text'])
{
unset($fout['text']);
}
if(!$cfg['input'])
{
unset($fout['input']);
}
if(!empty( $aFout ))
{
$errors = '
<div id="errors">
<ul>';
foreach($aFout as $sFout)
{
$errors .= " <li>".$sFout."</li>\n";
}
$errors .= "</ul>
</div>";
}
else
{
$formulier = FALSE;
if($cfg['HTML'])
{
// Headers
$headers = "From: \"Contact Formulier\" <".$cfg['email'].">\r\n";
$headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
$headers .= "Return-Path: Mail-Error <".$cfg['email'].">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<br />
<b>Naam:</b> '.$naam.'<br />
<b>Email:</b> <a href="mailto:'.$email.'">'.$email.'</a><br />
<br />
<b>Bericht:</b><br />
'.$bericht.'
<br />
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
<b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</body>
</html>';
}
else
{
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
// Headers
$headers = "From: \"Contact Formulier\" <".$cfg['email'].">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset='iso-8859-1'\n";
// Bericht
$message = "Naam: ".$naam." \n";
$message .= "E-mail: ".$email." \n";
$message .= "Bericht:\n".$bericht_wrap." \n ";
$message .= " \n ";
$message .= "Datum: ".date("d-m-Y H:i:s")." \n";
$message .= "------------------------------------------------------- \n ";
$message .= "IP: ".$_SERVER['REMOTE_ADDR']." \n ";
$message .= "Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])." \n ";
}
if(mail($cfg['email'], "[Contact] ".$onderwerp, $bericht, $headers))
{
if(isset($_POST['stuurkopie']))
{
$headers = "From: \"Contact Formulier\" <".$email.">\r\n";
$headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
$headers .= "Return-Path: Mail-Error <".$email.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($email, "[Contact] ".$onderwerp, $bericht, $headers);
}
unset($naam, $email, $onderwerp, $bericht);
setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );
echo "
<p>
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br />
<br />
Met vriendelijke groeten,<br />
<b>".$cfg['naam']."</b>
</p>
";
}
else
{
echo "Er is een fout opgetreden bij het verzenden van de email";
}
header("refresh:3;url=".$cfg['url']."");
}
}
if($formulier)
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Contact Formulier door Thijs</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="nl" />
</head>
<body>
<div id="container">
<?php
if(isset($errors)) {
echo $errors;
}
?>
<h3>Contact Formulier Versie 2</h3>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<p>
<label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label>
<input type="text" id="naam" name="naam" maxlength="30" <?php if(isset($fout['input']['naam'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($naam)) { echo stripslashes($naam); } ?>" /><br />
<label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label>
<input type="text" id="email" name="email" maxlength="255" <?php if(isset($fout['input']['email'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($email)) { echo stripslashes($email); } ?>" /><br />
<label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label>
<input type="text" id="onderwerp" name="onderwerp" maxlength="40" <?php if(isset($fout['input']['onderwerp'])) { echo 'class="fout'; } ?> value="<?php if (!empty($onderwerp)) { echo stripslashes($onderwerp); } ?>" /><br />
<label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label>
<textarea id="bericht" name="bericht" <?php if(isset($fout['input']['bericht'])) { echo 'class="fout"'; } ?> cols="35" rows="6"><?php if (!empty($bericht)) { echo stripslashes($bericht); } ?></textarea><br />
<?php
if($cfg['CAPTCHA'])
{
?>
<label></label>
<img src="captcha.php" alt="" /><br />
<label <?php if(isset($fout['text']['code'])) { echo 'class="fout"'; } ?>>Code:</label>
<input type="text" id="code" name="code" maxlength="4" size="4" <?php if(isset($fout['input']['code'])) { echo 'class="captcha fout"'; } ?> /><br />
<?php
}
?>
<label for="stuurkopie">Stuur mij een kopie</label><input type="checkbox" id="stuurkopie" name="stuurkopie" value="1" /><br />
<label></label>
<input type="submit" id="verzenden" name="verzenden" value="verzenden" />
<input type="submit" id="wis" name="wis" value="Wis velden" />
</p>
</form>
</div>
</body>
</html>
<?php
}
}
else
{
echo "
<p>
U kunt maar eens in de ".$cfg['spam']." minuten een e-mail versturen!<br />
U wordt nu automatisch doorgestuurd.
</p>";
header("refresh:3;url=".$cfg['url']."");
}
?>
<?php
############################################
# Filename : contact.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
// Config Gedeelte
$cfg [ 'url' ] = "http://www.uwwebsite.nl" ; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg [ 'naam' ] = "Uw naam" ; // Webmaster naam
$cfg [ 'email' ] = "uw email adres" ; // Webmaster E-mail
$cfg [ 'spam' ] = 10 ; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$cfg [ 'text' ] = TRUE ; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg [ 'input' ] = TRUE ; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg [ 'HTML' ] = TRUE ; // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg [ 'CAPTCHA' ] = TRUE ; // CAPTCHA ( TRUE voor aan, FALSE voor uit )
// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail( $email )
{
if ( eregi ( "^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$" , $email ) ) {
return TRUE ;
}
return FALSE ;
}
$formulier = TRUE ;
if ( ! isset ( $_COOKIE [ 'formulier' ] ) ) {
if ( isset ( $_POST [ 'wis' ] ) && ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" ) ) {
foreach ( $_POST as $key => $value )
{
}
header ( "Location: " . $_SERVER [ 'PHP_SELF' ] . "" ) ; }
if ( isset ( $_POST [ 'verzenden' ] ) && ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" ) ) {
$naam = trim ( $_POST [ 'naam' ] ) ; $email = trim ( $_POST [ 'email' ] ) ; $onderwerp = trim ( $_POST [ 'onderwerp' ] ) ; $bericht = trim ( $_POST [ 'bericht' ] ) ;
if ( $cfg [ 'CAPTCHA' ] )
{
$code = $_POST [ 'code' ] ;
}
{
$aFout [ ] = "Er is geen naam ingevuld." ;
$fout [ 'text' ] [ 'naam' ] = TRUE ;
$fout [ 'input' ] [ 'naam' ] = TRUE ;
}
{
$aFout [ ] = "Er is geen e-mail adres ingevuld." ;
$fout [ 'text' ] [ 'email' ] = TRUE ;
$fout [ 'input' ] [ 'email' ] = TRUE ;
}
elseif ( checkmail( $email ) == 0 )
// Wanneer je PHP 5.2 > gebruikt
//elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$aFout [ ] = "Er is geen correct e-mail adres ingevuld." ;
$fout [ 'text' ] [ 'email' ] = TRUE ;
$fout [ 'input' ] [ 'email' ] = TRUE ;
}
{
$aFout [ ] = "Er is geen onderwerp ingevuld." ;
$fout [ 'text' ] [ 'onderwerp' ] = TRUE ;
$fout [ 'input' ] [ 'onderwerp' ] = TRUE ;
}
{
$aFout [ ] = "Er is geen bericht ingevuld." ;
$fout [ 'text' ] [ 'bericht' ] = TRUE ;
$fout [ 'input' ] [ 'bericht' ] = TRUE ;
}
if ( $cfg [ 'CAPTCHA' ] )
{
if ( strtoupper ( $code ) != $_SESSION [ 'captcha_code' ] ) {
$aFout [ ] = "Er is geen correcte code ingevuld." ;
$fout [ 'text' ] [ 'code' ] = TRUE ;
$fout [ 'input' ] [ 'code' ] = TRUE ;
}
}
if ( ! $cfg [ 'text' ] )
{
}
if ( ! $cfg [ 'input' ] )
{
}
{
$errors = '
<div id="errors">
<ul>' ;
foreach ( $aFout as $sFout )
{
$errors .= " <li>" . $sFout . "</li>\n " ;
}
$errors .= "</ul>
</div>" ;
}
else
{
$formulier = FALSE ;
if ( $cfg [ 'HTML' ] )
{
// Headers
$headers = "From: \" Contact Formulier\" <" . $cfg [ 'email' ] . ">\r \n " ;
$headers .= "Reply-To: \" " . $naam . "\" <" . $email . ">\n " ;
$headers .= "Return-Path: Mail-Error <" . $cfg [ 'email' ] . ">\n " ;
$headers .= "MIME-Version: 1.0\n " ;
$headers .= "Content-Transfer-Encoding: 8bit\n " ;
$headers .= "Content-type: text/html; charset=iso-8859-1\n " ;
$bericht = '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<br />
<b>Naam:</b> ' . $naam . '<br />
<b>Email:</b> <a href="mailto:' . $email . '">' . $email . '</a><br />
<br />
<b>Bericht:</b><br />
' . $bericht . '
<br />
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> ' . date ( "d-m-Y @ H:i:s" ) . '<br /> <b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain=' . $_SERVER [ 'REMOTE_ADDR' ] . '\">' . $_SERVER [ 'REMOTE_ADDR' ] . '</a><br />
</body>
</html>' ;
}
else
{
$bericht_wrap = wordwrap ( $bericht , 40 , "\n " , 1 ) ; // Headers
$headers = "From: \" Contact Formulier\" <" . $cfg [ 'email' ] . ">\n " ;
$headers .= "MIME-Version: 1.0\n " ;
$headers .= "Content-type: text/plain; charset='iso-8859-1'\n " ;
// Bericht
$message = "Naam: " . $naam . " \n " ;
$message .= "E-mail: " . $email . " \n " ;
$message .= "Bericht:\n " . $bericht_wrap . " \n " ;
$message .= " \n " ;
$message .= "Datum: " . date ( "d-m-Y H:i:s" ) . " \n " ; $message .= "------------------------------------------------------- \n " ;
$message .= "IP: " . $_SERVER [ 'REMOTE_ADDR' ] . " \n " ;
$message .= "Host: " . gethostbyaddr ( $_SERVER [ 'REMOTE_ADDR' ] ) . " \n " ;
}
if ( mail ( $cfg [ 'email' ] , "[Contact] " . $onderwerp , $bericht , $headers ) ) {
if ( isset ( $_POST [ 'stuurkopie' ] ) ) {
$headers = "From: \" Contact Formulier\" <" . $email . ">\r \n " ;
$headers .= "Reply-To: \" " . $naam . "\" <" . $email . ">\n " ;
$headers .= "Return-Path: Mail-Error <" . $email . ">\n " ;
$headers .= "MIME-Version: 1.0\n " ;
$headers .= "Content-Transfer-Encoding: 8bit\n " ;
$headers .= "Content-type: text/html; charset=iso-8859-1\n " ;
mail ( $email , "[Contact] " . $onderwerp , $bericht , $headers ) ;
}
unset ( $naam , $email , $onderwerp , $bericht ) ;
<p>
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br />
<br />
Met vriendelijke groeten,<br />
<b>" . $cfg [ 'naam' ] . "</b>
</p>
" ;
}
else
{
echo "Er is een fout opgetreden bij het verzenden van de email" ; }
header ( "refresh:3;url=" . $cfg [ 'url' ] . "" ) ; }
}
if ( $formulier )
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Contact Formulier door Thijs</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="nl" />
</head>
<body>
<div id="container">
<?php
}
?>
<h3>Contact Formulier Versie 2</h3>
<form method="post" action="<?php $_SERVER [ 'PHP_SELF' ] ; ?> ">
<p>
<label
<?php if ( isset ( $fout [ 'text' ] [ 'naam' ] ) ) { echo 'class="fout"' ; } ?> >Naam:</label>
<input type="text" id="naam" name="naam" maxlength="30"
<?php if ( isset ( $fout [ 'input' ] [ 'naam' ] ) ) { echo 'class="fout"' ; } ?> value="
<?php if ( ! empty ( $naam ) ) { echo stripslashes ( $naam ) ; } ?> " /><br />
<label
<?php if ( isset ( $fout [ 'text' ] [ 'email' ] ) ) { echo 'class="fout"' ; } ?> >Email:</label>
<input type="text" id="email" name="email" maxlength="255"
<?php if ( isset ( $fout [ 'input' ] [ 'email' ] ) ) { echo 'class="fout"' ; } ?> value="
<?php if ( ! empty ( $email ) ) { echo stripslashes ( $email ) ; } ?> " /><br />
<label
<?php if ( isset ( $fout [ 'text' ] [ 'onderwerp' ] ) ) { echo 'class="fout"' ; } ?> >Onderwerp:</label>
<input type="text" id="onderwerp" name="onderwerp" maxlength="40"
<?php if ( isset ( $fout [ 'input' ] [ 'onderwerp' ] ) ) { echo 'class="fout' ; } ?> value="
<?php if ( ! empty ( $onderwerp ) ) { echo stripslashes ( $onderwerp ) ; } ?> " /><br />
<label
<?php if ( isset ( $fout [ 'text' ] [ 'bericht' ] ) ) { echo 'class="fout"' ; } ?> >Bericht:</label>
<textarea id="bericht" name="bericht"
<?php if ( isset ( $fout [ 'input' ] [ 'bericht' ] ) ) { echo 'class="fout"' ; } ?> cols="35" rows="6">
<?php if ( ! empty ( $bericht ) ) { echo stripslashes ( $bericht ) ; } ?> </textarea><br />
<?php
if ( $cfg [ 'CAPTCHA' ] )
{
?>
<label></label>
<img src="captcha.php" alt="" /><br />
<label
<?php if ( isset ( $fout [ 'text' ] [ 'code' ] ) ) { echo 'class="fout"' ; } ?> >Code:</label>
<input type="text" id="code" name="code" maxlength="4" size="4"
<?php if ( isset ( $fout [ 'input' ] [ 'code' ] ) ) { echo 'class="captcha fout"' ; } ?> /><br />
<?php
}
?>
<label for="stuurkopie">Stuur mij een kopie</label><input type="checkbox" id="stuurkopie" name="stuurkopie" value="1" /><br />
<label></label>
<input type="submit" id="verzenden" name="verzenden" value="verzenden" />
<input type="submit" id="wis" name="wis" value="Wis velden" />
</p>
</form>
</div>
</body>
</html>
<?php
}
}
else
{
<p>
U kunt maar eens in de " . $cfg [ 'spam' ] . " minuten een e-mail versturen!<br />
U wordt nu automatisch doorgestuurd.
</p>" ;
header ( "refresh:3;url=" . $cfg [ 'url' ] . "" ) ; }
?>
captcha.php
<?php
############################################
# Filename : captcha.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
session_start();
if (phpversion () < "5"){ // define PHP5 functions if server uses PHP4
function str_split($text, $split = 1)
{
if (!is_string($text)) return false;
if (!is_numeric($split) && $split < 1) return false;
$len = strlen($text);
$array = array();
$s = 0;
$e=$split;
while ($s <$len)
{
$e=($e <$len)?$e:$len;
$array[] = substr($text, $s,$e);
$s = $s+$e;
}
return $array;
}
}
// Captcha keygenerator
function keygen($aantal)
{
$tekens = array_merge(range('A', 'F'), array('H', 'J', 'K', 'M', 'N'), range('P', 'Z'));
$randomstring = "";
for($i=1; $i <= $aantal; $i++)
{
shuffle($tekens);
$randomstring .= $tekens[0];
}
return $randomstring;
}
$random_code = keygen(4);
$_SESSION['captcha_code'] = $random_code;
$breedte = 90;
$hoogte = 30;
header("content-type: image/png");
$afbeelding = imagecreate($breedte, $hoogte);
$achtergrond = imagecolorallocate($afbeelding, 255, 255, 255);
$font = "fonts/arial.ttf";
$kleur = imagecolorallocate($afbeelding, 186, 197, 214);
imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $kleur);
$aantal_punten = rand(250, 500);
for ($i = 0; $i < $aantal_punten; $i++)
{
imagesetpixel($afbeelding, rand(1, $breedte-1), rand(1, $hoogte-1), $kleur);
}
$aantal_lijnen = rand(5, 8);
$aantal_cirkels = rand(5, 8);
$aantal_lijnen2 = rand(2, 6);
$spread = 100;
for($i = 0; $i < $aantal_lijnen; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
for($i = 0; $i < $aantal_cirkels; $i++)
{
$y_center = rand(1, $breedte-1);
$x_center = rand(1, $hoogte-1);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageellipse($afbeelding, $y_center, $y_center, rand(50, 100), rand(50, 100), $kleur);
}
$tekst = str_split($random_code);
for ($i = 0; $i < count($tekst); $i++)
{
$xas = rand(5, 15);
$yas = rand(18, 25);
$graden = rand(-25, 25);
$grootte = rand(12,14);
$kleur = imagecolorallocate($afbeelding, rand(0, 100), rand(0, 100), rand(0, 100));
imagettftext($afbeelding, $grootte, $graden, $i * 20 + $xas, $yas, $kleur, $font, $tekst[$i]);
}
for($i = 0; $i < $aantal_lijnen2; $i++)
{
$y_begin = rand(-$spread, $hoogte + $spread);
$y_eind = rand(-$spread, $hoogte + $spread);
$kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255));
imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur);
}
imagepng($afbeelding);
imagedestroy($afbeelding);
?>
<?php
############################################
# Filename : captcha.php #
#------------------------------------------#
# Written By : Thijs Ferket #
# Website : www.ferket.net #
#------------------------------------------#
############################################
if ( phpversion ( ) < "5" ) { // define PHP5 functions if server uses PHP4
function str_split( $text , $split = 1 )
{
if ( ! is_numeric ( $split ) && $split < 1 ) return false ; $s = 0 ;
$e = $split ;
while ( $s < $len )
{
$e = ( $e < $len ) ?$e : $len ;
$array [ ] = substr ( $text , $s , $e ) ; $s = $s + $e ;
}
return $array ;
}
}
// Captcha keygenerator
function keygen( $aantal )
{
$randomstring = "" ;
for ( $i = 1 ; $i <= $aantal ; $i ++ )
{
$randomstring .= $tekens [ 0 ] ;
}
return $randomstring ;
}
$random_code = keygen( 4 ) ;
$_SESSION [ 'captcha_code' ] = $random_code ;
$breedte = 90 ;
$hoogte = 30 ;
header ( "content-type: image/png" ) ;
$afbeelding = imagecreate( $breedte , $hoogte ) ;
$achtergrond = imagecolorallocate( $afbeelding , 255 , 255 , 255 ) ;
$font = "fonts/arial.ttf" ;
$kleur = imagecolorallocate( $afbeelding , 186 , 197 , 214 ) ;
imagerectangle( $afbeelding , 0 , 0 , $breedte - 1 , $hoogte - 1 , $kleur ) ;
$aantal_punten = rand ( 250 , 500 ) ;
for ( $i = 0 ; $i < $aantal_punten ; $i ++ )
{
imagesetpixel
( $afbeelding , rand ( 1 , $breedte - 1 ) , rand ( 1 , $hoogte - 1 ) , $kleur ) ; }
$aantal_lijnen = rand ( 5 , 8 ) ; $aantal_cirkels = rand ( 5 , 8 ) ; $aantal_lijnen2 = rand ( 2 , 6 ) ; $spread = 100 ;
for ( $i = 0 ; $i < $aantal_lijnen ; $i ++ )
{
$y_begin = rand ( - $spread , $hoogte + $spread ) ; $y_eind = rand ( - $spread , $hoogte + $spread ) ; $kleur = imagecolorallocate
( $afbeelding , rand ( 170 , 255 ) , rand ( 170 , 255 ) , rand ( 170 , 255 ) ) ;
imageline( $afbeelding , 0 , $y_begin , $breedte , $y_eind , $kleur ) ;
}
for ( $i = 0 ; $i < $aantal_cirkels ; $i ++ )
{
$y_center = rand ( 1 , $breedte - 1 ) ; $x_center = rand ( 1 , $hoogte - 1 ) ; $kleur = imagecolorallocate
( $afbeelding , rand ( 170 , 255 ) , rand ( 170 , 255 ) , rand ( 170 , 255 ) ) ;
imageellipse
( $afbeelding , $y_center , $y_center , rand ( 50 , 100 ) , rand ( 50 , 100 ) , $kleur ) ; }
$tekst = str_split( $random_code ) ;
for ( $i = 0 ; $i < count ( $tekst ) ; $i ++ ) {
$kleur = imagecolorallocate
( $afbeelding , rand ( 0 , 100 ) , rand ( 0 , 100 ) , rand ( 0 , 100 ) ) ; imagettftext( $afbeelding , $grootte , $graden , $i * 20 + $xas , $yas , $kleur , $font , $tekst [ $i ] ) ;
}
for ( $i = 0 ; $i < $aantal_lijnen2 ; $i ++ )
{
$y_begin = rand ( - $spread , $hoogte + $spread ) ; $y_eind = rand ( - $spread , $hoogte + $spread ) ; $kleur = imagecolorallocate
( $afbeelding , rand ( 170 , 255 ) , rand ( 170 , 255 ) , rand ( 170 , 255 ) ) ;
imageline( $afbeelding , 0 , $y_begin , $breedte , $y_eind , $kleur ) ;
}
imagepng( $afbeelding ) ;
imagedestroy( $afbeelding ) ;
?>
style.css
body {
font: 10px Verdana, Arial, Helvetica, sans-serif;
}
div#container {
width: 400px;
margin:0 auto;
border: 1px solid #bac5d6;
padding: 15px;
background: #f2f4f7;
}
label {
float: left;
width: 140px;
text-align: left;
padding-top: 5px;
}
input, textarea {
padding: 3px;
margin: 3px;
border: 1px solid #bac5d6;
font: 10px Verdana, sans-serif;
background: #fff;
}
input.fout, textarea.fout {
border: 1px solid #FF0000;
}
label.fout {
color: #FF0000;
}
body {
font: 10px Verdana, Arial, Helvetica, sans- serif;
}
div#container {
width: 400px;
margin: 0 auto;
border: 1px solid #bac5d6;
padding: 15px;
background: #f2f4f7;
}
label {
float: left;
width: 140px;
text- align: left;
padding- top: 5px;
}
input, textarea {
padding: 3px;
margin: 3px;
border: 1px solid #bac5d6;
font: 10px Verdana, sans- serif;
background: #fff;
}
input. fout, textarea. fout {
border: 1px solid #FF0000;
}
label. fout {
color: #FF0000;
}
Download code (.txt)
Stemmen
Niet ingelogd.