Captcha

Status
Niet open voor verdere reacties.

joanne

Terugkerende gebruiker
Lid geworden
31 mrt 2001
Berichten
1.300
Heb hier een aangepast formulier met een captcha scriptje:

www.jeetee.nl/contact.php

Dit werkt dus (blij dat ik ben :D), maar dan.. :confused:

Was het voor mezelf aan het testen, maar ik kan bij god niet lezen wat ik nu moet invullen bij de code. Daar blijf ik dus steken.

a. moet ik zelf ergens een plaatje invullen? of moet ik ergens nog iets aanpassen???
b. zo ja, waar?
c. hier?:
PHP:
header("content-type: [COLOR="red"]image/png[/COLOR]");
dus een plaatje dat ik gewoon van mijn harde schijf haal, moet deze persé een png type zijn, dus geen .jpg?

d. hier volledige script:
PHP:
// 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 = 150;
$hoogte = 70;

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);
?>
Alvast dank voor de hulp.
 
Je vroeg om een plaatje, deze bijvoorbeeld, zou ik deze kunnen gebruiken?

Weet wat van PHP, maar niet alles, nog steeds in leerfase, dus waar zou ik hem kunnen plaatsen?

Het gaat me er dus om dat ik de code kan lezen en dus invullen in het formulier.

Thx.
 
Zou iemand naar het captcha-script script willen kijken??? Please??! Volgens mij is het maar een kleinigheid, waar ik dan met mijn beperkte kennis van PHP over het hoofd zie. De letters, die door user ingetikt zouden moeten worden in het blokje, zijn niet te zien. Waarom??

Dank alvast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan