1

我的验证码不起作用,我可以在后面调出线条,但数字在验证码中不可见。该代码在本地主机上运行完美,但在我的托管网站上却没有。

这是代码:

<?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);  
?>
4

2 回答 2

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. 我将代码保存在本地主机的 php 文件中。2. commneted line 包含 header('Content-type: image/jpeg'); 因为它将页面 mime-type 设置为 jpg 3. 我阅读了通知和警告。无论如何,我认为您的问题是空会话值或检查 gd 在您的服务器中是否启用。

于 2012-08-05T11:18:03.480 回答
0

我猜你缺少虚拟主机服务器上的字体。尝试一个免费的,它可能安装在服务器上,或者只是将字体上传到您的网络主机,然后设置字体文件的正确路径

于 2012-08-05T08:19:16.000 回答