Beste Webmasters,

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??
De aangemaakte afbeelding word niet meer weergegeven sinds begin van deze week. Terwijl er deze week geen aanpassingen zijn gedaan aan de bestanden...
Mogelijk is er iets mis met je GD library of de paden naar je fonts?

Haal je Content-Type header weg zodat je eventuele foutmeldingen kunt zien.

Zet ook het melden en weergeven van fouten aan:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>

Voeg de hierboven beschreven wijzigingen door in captcha.php en roep vervolgens dit bestand rechtstreeks aan.

Welke foutmelding(en) krijg je dan?
Ik heb bovenstaand script overgenomen en ook hier geen plaatje.
Precies gedaan wat Thomas zei en dit is de output:

GIF87a?2?2|???Df??????tv?4V???????\z?t??F????\f???L^???4Z?????????B????Tf????|????????,R?Tr?|??dr?>????4N?,J?????Tj?DZ???????DV????Ln?t~????t????????????????6|???|z????lz?dj?L^??????lr???????????DZ??????????<??O???,5xK??? "g!?zT??G ?B???E*#SD?9?YcQ?p????+.?nl??&?<???@? 5@2????B??1????\<??K??? R?H?>??k?p? W?R??q??-?0 ????qS?E |?D?2i?xa???2r?R???-aL??d??e??7??_??OJl?D?K????S ??;??o?soL?0<??s?X?3 <?????vP%U?@??B??(1?96?H Rq?7d??8???q}N%?5?F?YK?D ??? ?9?C?S?F??7??E$??!D????s? ?YP$??xD????"?[B??` y??? *?k?????6t?)????Z?[? @4 F0?6c8!?????0?? ???(a??? ?Gax??U-!pT ?J*?8y@???I?b?N????- <?N?8??T@?\?Y?Sh???p???sP!?0l?xLK??3*X 'N(0p? ?JE,B??=? ?9???P?B ??S?C?%1Q??H`AV !8????@g?P@??+lay??z?7?a a Ery-* ???s6???!???Y$??5d+}k????@MQAw?qA(??7????&?? PE1???@?A?q??Pm?7J??"g&??sG??J?##A#?N?X?(???.?@a|??0Z?@??)?)????? 58??2'h?? ??5?4`?y????G?DHK?????5 @)D?&?acax?/8??"?Kd??M???0l+,,-lA????TxB?1M??????Od??x08u??g???|5?? +uQ?]?X?-?J?y?`c??Bx?p c8???_?B?Fd????p?k???"?'??S?mc??By/?]ö????d?a??(¥1?`??b??-???????=?o!r?Nps?????{??Y?w;<????^m?pq?#%?^??X?:d??? f?V?£*?X?6?X?JO0??+1??+|???#,o~#T?+???J?_??J?H)s?5?????G0?%??|??~'??9?H??B?,?C?Y??;?\&4l?<?6s90 ??? ??:s??6?=WX?h??s?^??<??i???c; 
Je probeert text te concateneren aan een variabele die nog niet bestaat (regel 24).

Ininitialiseer deze tussen regel 21 en 22 op de lege string:
<?php
$randomnr = '';
?>
@Thomas: Dat had ik reeds al gedaan.
Is je font nog wel beschikbaar?
$font = 'includes/ArtBrush.ttf';

[size=xsmall]Toevoeging op 01/05/2015 23:22:10:[/size]

Het script werkt (direct aangeroepen) prima. Wel even een ander bij mij beschikbaar font gebruikt:
'/usr/share/fonts/truetype/freefont/FreeSerif.ttf';
PHP hier is 5.4.39 en Apache 2.0
Wel zoals eerder opgemerkt door Thomas een notice: Undefined variable: randomnr in /var/www/test/httpdocs/testgif.php on line 24.
Mogelijk breekt dat af bij jou hoster die misschien (sinds kort) deze notice niet (meer) accepteert. Dus ook even doen wat Thomas aangeeft.
Heb alles nagekeken wat jullie vertelden en uiteindelijk was het toch:


<?php
$randomnr = '';
?>


Op zich wel apart dat hij na een jaar dat hij zonder problemen gewerkt heeft nu op zo'n punt vastloopt?

Mag ik jullie allemaal bedanken voor de hulp! Hij is weer gefixt!
==>> Op zich wel apart dat hij na een jaar dat hij zonder problemen gewerkt heeft nu op zo'n punt vastloopt?
Komt waarschijnlijk omdat je hoster een update heeft uitgevoerd en waarbij de vroegere notice nu een error is en je script stopt. Het is handig om de versies bij je hoster in de gaten te houden om bijvoorbeeld bij dit soort acties te achterhalen wat er gebeurt is. Helaas zijn er veel hosters die zonder enige aankondiging systeemchanges doorvoeren.
Dit is inderdaad vreemd maar dit is niet het enige waar ik zojuist tegenaan ben gelopen.

	$path = "images/winkel/".$HTTP_POST_FILES['afbeelding']['name'][0];
	$afbeelding= "".$HTTP_POST_FILES['afbeelding']['name'][0];

if($afbeelding == "") {
		}else{
copy($HTTP_POST_FILES['afbeelding']['tmp_name'][0], $path);

$filesize1=$HTTP_POST_FILES['afbeelding']['size'][0];

if($filesize1==0) {
$userErrors[] = "Kon afbeelding niet uploaden!<br>";
}



Dit werkt ook niet meer als ik deze code verwijder kan ik rustig mijn artikel toevoegen via PHP en MYSQL maar emt dit stukje code breekt hij me code af.

Reageren