我的验证码不能正常工作,我能够在后面调出线条但是这些数字在验证码中不可见。代码在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);
?>
答案 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路径