-3

我有一个用于验证码的 php 文件。但是网页中没有图像。我无法找出问题所在。请帮我。这是我的代码。

<?php
ob_start();
session_start();
// Set the content-type
header('Content-Type: image/jpeg');
mimetypes.add_type('application/font-ttf', '.ttf', True)
// Create the image
$im = imagecreatefromjpeg('bg.jpg');

// Create some colors
$R = rand(0,100);
$G = rand(0,100);
$B = rand(0,100);

$cc = imagecolorallocate($im, $R, $G, $B);


// The text to draw
$text = rand(100,10000);
$_SESSION['text'] = $text;
// Replace path by your own font path
$font = 'arial.ttf';



// Add the text
imagettftext($im, rand(40,45), rand(0,1), rand(10,70), rand(38,50), $cc, $font, $text);
$NumberOfLines=15;
imagecolorallocate($im, 15, 142, 210);

$cc=0;
while($cc < $NumberOfLines){
// set random color:::

//assign random rgb values
$c1 = mt_rand(50,200); //r(ed)
$c2 = mt_rand(50,200); //g(reen)
$c3 = mt_rand(50,200); //b(lue)
//test if we have used up palette
if(imagecolorstotal($im)>=255) {
    //palette used up; pick closest assigned color
    $color = imagecolorclosest($im, $c1, $c2, $c3);
} else {
    //palette NOT used up; assign new color
    $color = imagecolorallocate($im, $c1, $c2, $c3);
}

// done...
$startH =rand(3,200);
$startTOP = rand(0,8);
$stopH=rand(3,200);
$stopTOP =50;

imageline($im, $startH, $startTOP, $stopH, $stopTOP, $color);
$cc++;
}

// Using imagepng() results in clearer text compared with imagejpeg()
imagejpeg($im);
imagedestroy($im);
?>

此脚本文件的名称是 img.php 并且它被设置为img 标签的 src,例如 img src='img.php' 这里 arial.ttf 文件位于此 php 文件所在的同一文件夹中。请帮助我。未加载此验证码图像。

4

1 回答 1

0

首先删除 ob_start() 命令。这没有多大意义(至少对我而言)。然后取消注释 header(..) 行,以便您在浏览器中看到错误消息。我必须做以下事情来启动和运行代码:

  • 我删除了 mimetypes 行(这到底是 PHP 吗?如果是,则缺少分号)
  • 脚本没有找到字体 - 我必须使用绝对路径并设置权限

当您完成调试并在浏览器窗口中看到花哨的字符时,再次添加 header(..) 行。

于 2013-08-18T08:10:41.807 回答