我创建了一个简单的验证码生成器,但不会显示验证码:
index.php:
<?php
session_start();
$_SESSION['captcha'] = rand(1000, 9999);
?>
<img src="generator.inc.php" />
generator.inc.php:
<?php
session_start();
header('Content-type: image/jpeg');
$text = $_SESSION['captcha'];
$font_size = 30;
$image_width = 160;
$image_height = 50;
$image = imagecreate($image_width, $image_height);
imagecolorallocate($image, 200, 200, 200);
$font_color = imagecolorallocate($image, 20 , 20 , 20);
imagettftext($image, $font_size, 0, 15, 30, $font_color, 'BYekan.ttf', $text);
imagejpeg($image);
?>
请告诉我,我做错了什么?
P.S:
我在Linux上使用Lamp服务器。
答案 0 :(得分:1)
可能未安装GD library。
同时检查php.ini
并确保取消注释GD行。
答案 1 :(得分:0)
我删除了脚本中的header
函数调用,发现了一个未定义$image_height
变量的错误。在您的脚本中,您复制$image_width
作业。
答案 2 :(得分:0)
我的建议是尝试两件事:
我之前已阅读并看过人们建议将内容类型header('Content-type: image/jpeg');
放在imagejpeg($image);
之前。在这里支持这篇文章的是一篇文章:http://php.net/manual/en/function.imagejpeg.php
我的另一个建议是对文件进行base64_encode。如果header('Content-type: image/jpeg');
产生错误建议“ header()必须在发送任何实际输出之前调用”,那么base64_encode允许用户创建指定内容类型的图像。删除标题代码,然后在调用imagejpeg($image);
时添加以下代码。
ob_start();
imagejpeg($image); //your code
$img = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpeg;base64,'.base64_encode($img).'" />';