<?php
ob_start();
session_start();
/***************************************************************************
*Bestand: image.php
*Script: wImage
*Versie: 1.4
*Datum: 10-02-2007
*Maker: Wouter van Eekelen
*Website: http://www.woutervaneekelen.nl
*
*Copyright Wouter van Eekelen. All Rights Reserved.
*Dit blok moet intact blijven
***************************************************************************/
// Deze instellingen zijn ingesteld zoals het het makkelijkst, leesbaarst en veiligste is.
// Instellingen raad ik aan om niet te wijzigen, doe je dit wel, is dit op EIGEN risico.
// Ook kloten in het script raad ik je niet aan.
// Je kan altijd nog de nieuwste versie downloaden op http://www.woutervaneekelen.nl
$lijnen = 8; // Hoeveel lijnen wil je door het plaatje heen? 0 voor geen. (Ik raad aan maximaal 35)
$tekens = 6; // Hoeveel tekens?
$varieer = 0; // Varieren met de lengte? (Let op: Als deze aan staat, werkt de functie "Hetzelfde plaatje" niet meer.)
$draaien = 1; // Moeten de letters gedraaid worden weergeven? (Moeilijker voor een bot om te lezen)
$fonts = "rod.ttf"; // Hier kan je .OTF en .TTF fonts toevoegen. Plaats deze op dezelfde plek als image.php. Scheiden door een | (Dus font.ttf|font2.ttf etc.)
$fonts_afwisseling = 1; // Moet er met de fonts afgewisseld worden? (0 = per code | 1 = per letter)
$letters = 0; // Moeten er letters in de code staan?
$groote = 1; // Moeten de tekens wisselen in groote?
$zelfde = 0; // Moet er bij een fout antwoord, hetzelfde plaatje komen? LET OP: Dit werkt alleen als varieren uit staat. (Deze functie raad ik aan uit te laten.)
$wachten = 2; // Hoelang moet er gewacht worden bij elke poging? Aantal in seconden. (Ik raad maximaal 3 aan, 1 voorkomt namelijk al veel spambots)
$tekens_hoeveel = 20; // Hoeveel kleine tekens moeten erdoorheen? (Ik raad aan maximaal 40)
$tekens_welke = array("!","@","#","$","%","^","&","*","-","_"); // Welke tekens moeten er zomaar door het plaatje worden heengezet?
// Een aantal seconden wachten
sleep($wachten);
// Image maken met achtergrond kleur
$breedte = $tekens * 40;
$image = imagecreate($breedte, 40);
$background = imagecolorallocate($image, rand(150,255), rand(150,255), rand(150,255));
// Standaard lege sessie
$session = "";
// Moeten we varieren met de lengte?
if($varieer == 1 && $tekens > 3){
$tekens = rand(3,$tekens);
}
if($fonts_afwisseling == 0){
$explode = explode("|", $fonts);
$count = count($explode) - 1;
$rand = rand(0,$count);
$font = $explode[$rand];
}
// Nummers erop zetten
for($i = 0; $i < $tekens; $i++){
if($fonts_afwisseling == 1){
$explode = explode("|", $fonts);
$count = count($explode) - 1;
$rand = rand(0,$count);
$font = $explode[$rand];
}
$colour = imagecolorallocate($image, rand(1,150), rand(1,150), rand(1,150));
$colour_error = imagecolorallocate($image, 1, 1, 1);
if($zelfde == 1 && $varieer == 0 && !empty($_SESSION['wimage'])){
$text = substr($_SESSION['wimage'], $i, 1);
} else {
if($letters == 1){
if(rand(0,1) == 0){
$explode = range('A', 'Z');
$rand = rand(0,25);
$text = $explode[$rand];
} else {
$text = rand(0,9);
}
} else {
$text = rand(0,9);
}
}
if($draaien == 1){
$angle = rand(-25,25);
} else {
$angle = 0;
}
if($groote == 1){
$size = rand(20,23);
} else {
$size = 20;
}
// Standaard font als de font niet bestaat
if(!file_exists($font)){
if($fout != 1){
imagestring($image, 2, 10, 15, "Error loading font: ".$font, $colour_error);
}
$fout = 1;
} else {
imagettftext($image, $size, $angle, rand(0,5) + ($i * 30) + 10, rand(25,30), $colour, $font, $text);
}
$session .= $text;
}
// Lijnen erop zetten
if($fout != 1){
for($i = 0; $i < $lijnen; $i++){
$colour = imagecolorallocate($image, rand(150,255), rand(150,255), rand(150,255));
imageline($image, rand(0,$breedte), rand(0,50), rand(0,$breedte), rand(0,50), $colour);
}
}
// Tekens erop zetten
if($fout != 1){
for($i = 0; $i < $tekens_hoeveel; $i++){
// Welke font?
$explode = explode("|", $fonts);
$count = count($explode) - 1;
$rand = rand(0,$count);
$font = $explode[$rand];
// Welk teken?
$count = count($tekens_welke);
$rand = rand(0,$count);
$teken = $tekens_welke[$rand];
$colour = imagecolorallocate($image, rand(200,255), rand(200,255), rand(200,255));
// Standaard font als de font niet bestaat
if(!file_exists($font)){
imagestring($image, 1, rand(0,$breedte), rand(0,40), $teken, $colour);
} else {
imagettftext($image, rand(7,9), rand(0,360), rand(0,$breedte), rand(0,40), $colour, $font, $teken);
}
}
}
// Session instellen
$_SESSION['wimage'] = $session;
// Plaatje laten zien
header("(anti-spam-content-type:) image/jpg");
imagejpeg($image);
imagedestroy($image);
?>