CrossGuard
CrossGuard

Reputation: 35

GD Captcha security form coming up blank

So I'm trying to make a Captcha form for my registration form and I'm not sure what's going wrong because whenever I open up the page I see the image shown when the url of an image is not found (I would post a picture, but I can't since this is my first question).

I'm not sure what I'm doing wrong because I was following a tutorial as I was making it and it seemed to work for them. Also, no errors are being displayed so I have no idea what could be wrong. My code is here:

<?php
session_start();
header('Content-type: image/jpeg');

$text = 4539;
$font_size = 4;
$image_height = 40;
$image_width = 200;
$image = imagecreate($image_width, $image_height);
imagecolorallocate($image, 255, 255, 255);
$font_colour = imagecolorallocate($image, 0, 0, 0);
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'font';
imagettftext($image, 0, 15, 30, $font_colour, $font, $text);
?>

Also the $text variable will be set to random when I know the code works, the value is static for testing purposes. I would appreciate any help I can get. Thanks in advance

Upvotes: 1

Views: 230

Answers (1)

mmajis
mmajis

Reputation: 545

You need to output the image to the browser after you add the text to it:

imagettftext($image, 0, 15, 30, $font_colour, $font, $text);
imagepng($image);
imagedestroy($image);

The destroy may not be strictly needed as the php process exits after the script is done, but the examples have it so I included it.

Also, you can choose between png, gif and jpeg image formats by using either imagepng(), imagegif() or imagejpeg(). The png format should be good here.

Upvotes: 1

Related Questions