为什么我在url中输入验证码文件路径它返回二进制文件而不是图像文件

时间:2015-06-29 07:01:14

标签: php

为什么我在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);
?>

2 个答案:

答案 0 :(得分:0)

此命令可能失败,因此它会在标头输出之前发送输出。

imagettftext($image, $fontSize, 0, $x, $y, $textColor, './captchafont/bnazanin.ttf', $text);

确保字体是上面的一个文件夹&#34; captchafont&#34;文件夹,参考这个php文件路径。

尝试对该行进行评论,您应该至少看到图像呈现,并在其上显示一些线条。

答案 1 :(得分:0)

几年后,我想回答我的老问题,但我忘了关闭它

问题出在标题上,标题应该如下所示

header('Content-type:image/png');

仅此而已。