<?php

//hier start de session
session_start();

//hier zegen we tegen de browser dat het om een afbeelding
header("Content-type: image/jpeg");

//deze functie begin je de afbeelding
$img = @imagecreate(100,20);

// Met deze functie stel je een kleur waarden in 255 is geen van alle kleuren en 0 is alle kleuren bij elkaar
// door voor de grafische mensen onder ons is 255 de nul waarden

$bg = imagecolorallocate($img, 255, 255, 255);
$txt = imagecolorallocate($img, 0, 0, 0);

// hier beginnen we met een random getal te genereren
// ik denk dat srand en rand wel bekend zijn bij de meeste mensen
// maar voor mensen die het niet weten leg ik het toch effe uit
// met srand stel je een seed in voor de rand
// ik gebruik hier time maar je kan ook gewoon alles gebruiken

$seed = time();
$seed = srand($seed);

//met md5 kan je heel een heel mooie code met cijfers en letters genereren
$rand = md5(rand());

//zoals je nu ziet gebruik ik nu date dat is om een andere seed te genereren
$seed2 = date("zs");
$seed2 = srand($seed2);
$start = rand(0,22);

// zoals je mischien al ziet gebruik ik deze random van een willekeurige plek uit de 
// 32 karakters lange code een code te plukken van maar 10 karakters lang
$code = substr($rand,$start,10);

// ik sla het op in een sessie zodat je het in een andere script kan vergelijken
// met de echte code en de input van de gebruiker bijv in een if statement
$_SESSION['code'] = $code;

//en hiermee plak je de code op het plaatje
imagestring($img, 10, 5, 2,  $_SESSION['code'], $txt);

// hier begint het anti bot truukje
// de nieuwere bots die worden gebruikt bij brute force aanvallen
// die kunnen tekens herken die ze scannen van het plaatje af
// daarom gaan wij het plaatje omdraaien zodat ze niet meer horizontaal te lezen zijn

//random hoef ik niet te vertellen
$angle_choice = date("sz");
$angle_choice = srand($angle_choice);
$angle_choice = rand(1,2);

//dit is eigenlijk een verkorte versie van een if statement ik conroleer de output van
// de random hierboven hier gebeurt ook de selectie of hij cw of ccw draait
$angle_choice = ($angle_choice == 1)?"angle_neg" : "angle_pos";

//als het deze word draait hij cw
$angle_neg = rand(-7,-2);
//alls het deze word draait hij ccw
$angle_pos = rand(7,2);

//deze functie draait de bron afbeelding om in de hoek die opgegeven is en plakt die
// in een nieuwe afbeelding
$rotate = imagerotate($img,$$angle_choice,$bg);

//nu maken we van onze code een output
imagejpeg($rotate);

//en nu vernietigen we het plaatje
imagedestroy($rotate);
imagedestroy($img);

?> 