验证码无法使用php工作

时间:2012-08-05 08:03:03

标签: php image captcha imagettftext

我的验证码不能正常工作,我能够在后面调出线条但是这些数字在验证码中不可见。代码在localhost上工作得很好,但在我的托管网站上却没有。

这是代码:

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

$text= $_SESSION['secure'];

$font_size =30;
$image_width= 110;
$image_height=40;

$image=imagecreate($image_width,$image_height);
imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);


for($x=1; $x<=30; $x++){
$x1 = rand(1,100);
$x2 = rand(1,100);
$y1 = rand(1,100);
$y2 = rand(1,100);
imageline($image, $x1, $x2, $y1, $y2, $text_color);
}

imagettftext($image, $font_size, 0, 15, 30, $text_color, 'font.TTF', $text);
imagejpeg($image);  
?>

2 个答案:

答案 0 :(得分:1)

我评论说这行,我得到了这个警告并注意到:

Notice: Undefined index: secure in F:\xampp\htdocs\captcha.php on line 4 
Warning: imagettftext() [function.imagettftext]: Invalid font filename in F:\xampp\htdocs\captcha.php on line 23

所以首先检查字体位置。 然后查看$ _SESSION ['secure']值,如果它是空的,请检查该会话为空的原因。希望它可以帮助你。

编辑: 1.我将代码保存在我的localhost中的php文件中。 2.包含标题的commneted行('Content-type:image / jpeg');因为它将页面mime-type设置为jpg 我读了通知和警告。 无论如何,我认为您的问题是空的会话值或检查gd是否在您的服务器中启用。

答案 1 :(得分:0)

我猜你错过了你的虚拟主机服务器上的字体。尝试一个免费的,可以在服务器上安装,或者只是将字体上传到你的webhost,设置正确的fontfile路径