为什么我在url中输入验证码文件路径它返回二进制文件而不是图像文件,但是当我在img标签中使用时,每件事都运行良好。 这是我的captha文件
<?php
session_start();
ob_start();
//$captchaText = strtoupper(substr(md5(microtime()), 0, 5));
$captchaText=rand ( 100000 , 999999 );
$_SESSION['captcha'] = $captchaText;
$image = imagecreate(230, 70);
$background = imagecolorallocatealpha($image, 239, 239, 239, 1);
$textColor = imagecolorallocatealpha($image, mt_rand(0, 100), mt_rand(0,255), mt_rand(0,255), 1);
$x = 25;
$y = 50;
for($i = 0; $i < 6; $i++) {
$fontSize = mt_rand(30, 50);
$text = substr($captchaText, $i, 1);
imagettftext($image, $fontSize, 0, $x, $y, $textColor, './captchafont/bnazanin.ttf', $text);
$x = $x + 17 + mt_rand(0, 10);
$y = mt_rand(40, 65);
$textColor = imagecolorallocatealpha($image, mt_rand(0, 255), mt_rand(0,255), mt_rand(0,255), 1);
$linecolor=imagecolorallocatealpha($image, mt_rand(0, 255), mt_rand(0,255), mt_rand(0,255), 1);
imageline($image,mt_rand(0, 230) , mt_rand(0, 70) ,mt_rand(0, 230), mt_rand(0, 70), $linecolor);
imageline($image,mt_rand(0, 230) , mt_rand(0, 70) ,mt_rand(0, 230), mt_rand(0, 70), $linecolor);
}
header("Content-type: application/jpeg");
imagejpeg($image);
imagedestroy($image);
?>
答案 0 :(得分:0)
此命令可能失败,因此它会在标头输出之前发送输出。
imagettftext($image, $fontSize, 0, $x, $y, $textColor, './captchafont/bnazanin.ttf', $text);
确保字体是上面的一个文件夹&#34; captchafont&#34;文件夹,参考这个php文件路径。
尝试对该行进行评论,您应该至少看到图像呈现,并在其上显示一些线条。
答案 1 :(得分:0)
几年后,我想回答我的老问题,但我忘了关闭它
问题出在标题上,标题应该如下所示
header('Content-type:image/png');
仅此而已。