Scripts

Validatie 3.2

Ik was nieuwschierig naar hoe men een afbeelding met letters weergaf welke je moest invoeren om te controleren dat je geen bot was, Ik had geen zin om het op te zoeken dus ben ik zelf maar met een hele simpele versie begonnen. dankzij de vele reacties over de onveiligheid van dit script is dit nu al versie 3 en hoewel de veiligheid sterk verbeterd is, is de simpelheid ook iets moeilijker te vinden. NOTE: let erop dat het script schrijf-rechten heeft gezien het een afbeelding op je server zet! veranderingen: - een enkele afbeelding word gegenereerd - alle letters kunnen weergegeven worden - de check word per sessie verstuurd, - kleine aanpassingen voor de leesbaarheid, De font die ik gebruikte is hetzelfde gebleven als hiervoor maar omdat het nu gegenereerd word zal je je eigen gdf font moeten uploaden of deze gebruiken: http://nosferatu.890m.com/scripts/validatie/3d.gdf

validatie-32
[code]
<?php
session_start(); // sessie starten

// netjes de variabele aanmaken om notice meldingen te voorkomen
$x = "";

$num = 5; // aantal afbeeldingen dat je wil laten zien

if(isset($_POST['validatie'])){ // is er op de verzend knop geklikt?
	// de POST gegevens ophalen
	$code = strtolower($_POST['code']);
	if(!is_numeric($code)){ // zijn er cijfers ingevoerd?
		
		// de ingevoerde code weer omzetten in cijfers
		$code = str_replace("a", "0_", $code);
		$code = str_replace("b", "1_", $code);
		$code = str_replace("c", "2_", $code);
		$code = str_replace("d", "3_", $code);
		$code = str_replace("e", "4_", $code);
		$code = str_replace("f", "5_", $code);
		$code = str_replace("g", "6_", $code);
		$code = str_replace("h", "7_", $code);
		$code = str_replace("i", "8_", $code);
		$code = str_replace("j", "9_", $code);
		$code = str_replace("k", "10_", $code);
		$code = str_replace("l", "11_", $code);
		$code = str_replace("m", "12_", $code);
		$code = str_replace("n", "13_", $code);
		$code = str_replace("o", "14_", $code);
		$code = str_replace("p", "15_", $code);
		$code = str_replace("q", "16_", $code);
		$code = str_replace("r", "17_", $code);
		$code = str_replace("s", "18_", $code);
		$code = str_replace("t", "19_", $code);
		$code = str_replace("u", "20_", $code);
		$code = str_replace("v", "21_", $code);
		$code = str_replace("w", "22_", $code);
		$code = str_replace("x", "23_", $code);
		$code = str_replace("y", "24_", $code);
		$code = str_replace("z", "25_", $code);
		
		if($code == $_SESSION['validatie_check']){ // de opgegeven code vergelijken met de check uit de sessie
			$succes = true; // het klopt
		} else {
			$succes = false; // het klopt niet
		}
	} else {
		$succes = false; // er zijn cijfers ingevoerd i.p.v. letters, dus het klopt niet
	}
}

// de cijfer code genereren
for($i = 0; $i < $num; $i ++){
	$x .= rand(0,25) . "_";
}

$_SESSION['validatie_check'] = $x; // de code in de sessie bewaren zodat je het later kan controlleren

// de letters defineren
$a[0] = 'A';
$a[1] = 'B';
$a[2] = 'C';
$a[3] = 'D';
$a[4] = 'E';
$a[5] = 'F';
$a[6] = 'G';
$a[7] = 'H';
$a[8] = 'I';
$a[9] = 'J';
$a[10] = 'K';
$a[11] = 'L';
$a[12] = 'M';
$a[13] = 'N';
$a[14] = 'O';
$a[15] = 'P';
$a[16] = 'Q';
$a[17] = 'R';
$a[18] = 'S';
$a[19] = 'T';
$a[20] = 'U';
$a[21] = 'V';
$a[22] = 'W';
$a[23] = 'X';
$a[24] = 'Y';
$a[25] = 'Z';

for($i = count($a) - 1; $i >= 0; $i --){ 
	$x = str_replace($i . "_", $a[$i], $x); // de getallen door letters vervangen
}

$font = imageloadfont('3d.gdf'); // gdf font laden, gebruik hiervoor GDF fonts en geen windows fonts!
$fontWidth = imagefontwidth($font); // hoe breed is de font?
$fontHeight = imagefontheight($font); // hoe hoog is de font?
$im = imagecreate(strlen($x) * $fontWidth, $fontHeight); // afbeelding aanmaken door de lengte van code te vermeningvuldigen met de lengte van de font
imagecolorallocate($im, 255, 255, 255); // achtergrondkleur instellen
$fgColor = imagecolorallocate($im, 100, 100, 100); // letterkleur defineren
imagestring($im, $font, 0, 0, $x, $fgColor); // de code in de afbeelding stoppen
imagejpeg($im, "pic.jpg", 100); // afbeelding in jpeg formaat zetten en opslaan in 'pic.jpg'

?>

<html>
<head>
<title>Validatie Script</title>
</head>
<body>
<img src="pic.jpg" />
<form method="post">
<input type="text" name="code" />
<input type="submit" name="validatie" value="Valideer!" />
</form>

<?php
if(!isset($succes))
	echo "Type de letters die je ziet."; // iets doen als er nog niks gedaan is
else {
	if($succes)
		echo "Je bent een mens."; // iets doen bij succes
	elseif(!$succes)
		echo "Fout! Probeer het nog eens."; // iets doen als er geen succes is
}
?>

</body>
</html>
[/code]

Reacties

0
Nog geen reacties.