Ik gebruik al jaren dezelfde script voor mijn CAPTCHA en altijd al met succes eigenlijk nooit problemen tot van de week....Niks geupload, niks veranderd.... Wie kan mij helpen ik gebruik de volgende code:
<?php
// Start de Session die nodig is om de Captcha code te gebruiken.
session_start();
// Lijst met alle letters en cijfers die gebruikt worden om de Captcha aan te maken.
// Ik heb ervoor gekozen om een aantal letters en cijfers weg te laten aangezien deze veel op elkaar lijken (1, i).
$Characters = '23456789abcdefghjklmnpqrstuvwxyz';
// Aantal tekens dat gebruikt wordt om de Captcha aan te maken.
// Ik heb het aantal ingesteld op 5
$chars = 5;
// Stel hieronder de afmetingen voor de Captcha afbeelding in.
// Ik heb gekozen voor 150 pixels breed bij 50 pixels hoog.
$Width = 150;
$Height = 50;
// Maak de Captcha code aan. De code hieronder kiest willekeurig het aantal tekens uit dat is vastgelegd.
// In het geval van dit voorbeeld worden er 5 willekeurige tekens gekozen uit de lijst $Characters
$i = 0;
while ($i < $chars)
{
$randomnr .= substr($Characters, mt_rand(0, strlen($Characters)-1), 1);
$i++;
}
// Schrijf de aangemaakte Captcha code weg in een Session.
// Ik versleutel de code met een md5 hash zodat de code niet zomaar uit de Session te lezen is.
$_SESSION['randomnr2'] = md5($randomnr);
// Start met het aanmaken van de afbeelding.
$im = imagecreatetruecolor($Width, $Height);
// Bepaal de kleuren die je wilt gebruiken. Deze Captcha maakt gebruik van 3 kleuren.
// Kleur 1: $front is de Captcha Code waar het uitenidelijk om draait.
// Kleur 2: $shadow is de schaduw die ik achter de Captcha Code schrijf.
// Kleur 3: $background is de achtergrond kleur van de gehele Captcha afbeelding.
$front = imagecolorallocate($im, 255, 255, 255);
$shadow = imagecolorallocate($im, 128, 128, 255);
$background = imagecolorallocate($im, 6, 51, 125);
// Vul de aangemaakt afbeelding met de hierboven ingestelde achtergrond kleur.
imagefilledrectangle($im, 0, 0, $Width, $Height, $background);
// Stel het True Type Font in dat je wilt gaan gebruiken.
// Zorg ervoor dat je de juiste locatie van je .ttf bestand invult.
// Voor deze Captcha maak ik gebruik van Artbrush.ttf
$font = 'includes/ArtBrush.ttf';
// Stel de max. en min. hoek in waarmee je de Captcha weg wilt schrijven. Gebruik hiervoor een getal tussen de 0 en 15.
// Deze hoeken worden hierna willekeurig bepaalt aan de hand van de ingestelde max. en min. waarden.
// $angle1 is de hoek waarin de Schaduw van de Captcha code wordt weergegeven.
// $angle2 is de hoek waarin de Captcha code zelf wordt weergegeven.
$angle1 = rand(-12, 12);
$angle2 = rand(-12, 12);
// Schrijf de Schaduw van de Captcha op de afbeelding.
// Het eerste getal (hier 25) is de grootte van de tekens die weggeschreven worden.
// Het tweede getal (hier 20) is de afstand in pixels dat de tekens van de rechterkant af weggeschreven worden.
// Het derde getal (hier 28) is de afstand in pixels dat de tekens van de bovenkant af weggeschreven worden.
imagettftext($im, 25, $angle1, 20, 28, $shadow, $font, $randomnr);
// Schrijf de Captcha Code op de afbeelding.
// Het eerste getal (hier 20) is de grootte van de tekens die weggeschreven worden.
// Het tweede getal (hier 30) is de afstand in pixels dat de tekens van de rechterkant af weggeschreven worden.
// Het derde getal (hier 32) is de afstand in pixels dat de tekens van de bovenkant af weggeschreven worden.
imagettftext($im, 20, $angle2, 30, 32, $front, $font, $randomnr);
// Voorkom dat de afbeelding ge-cached wordt door headers te versturen.
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// Verzend de aangemaakte afbeelding naar de browser.
header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>Opgeroepen d.m.v.
<label for='AntiSpam'><img src='captcha.php' /></label>Kan iemand mij helpen of heeft iemand een idee hoe het in ene kan veranderen??