【问题标题】:GD Captcha security form coming up blankGD Captcha 安全表单出现空白
【发布时间】:2013-02-02 21:05:30
【问题描述】:

所以我正在尝试为我的注册表单制作验证码表单,但我不确定出了什么问题,因为每当我打开页面时,我都会看到在找不到图像的 url 时显示的图像(我会发布图片,但我不能,因为这是我的第一个问题)。

我不确定自己做错了什么,因为我在制作教程时正在遵循教程,而且它似乎对他们有用。此外,没有显示任何错误,所以我不知道可能出了什么问题。我的代码在这里:

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

$text = 4539;
$font_size = 4;
$image_height = 40;
$image_width = 200;
$image = imagecreate($image_width, $image_height);
imagecolorallocate($image, 255, 255, 255);
$font_colour = imagecolorallocate($image, 0, 0, 0);
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'font';
imagettftext($image, 0, 15, 30, $font_colour, $font, $text);
?>

当我知道代码可以工作时,$text 变量也将设置为随机,该值是静态的,用于测试目的。我会很感激我能得到的任何帮助。提前致谢

【问题讨论】:

  • 尝试评论这一行:header('Content-type: image/jpeg'); 并查看 php 向您显示什么错误。还要确保你的 ttf 字体文件存在,我不认为缺少 .ttf 扩展名是个好主意
  • 试试$text = '4539';(定义为字符串
  • 所以我尝试了两者所说的并注释掉“标题”给了我一个错误,告诉我我错过了 imagettftext() 函数中的一个参数,但是在修复这个之后,图像仍然出现,好像图片的文件路径错误

标签: php image captcha


【解决方案1】:

添加文字后需要将图片输出到浏览器:

imagettftext($image, 0, 15, 30, $font_colour, $font, $text);
imagepng($image);
imagedestroy($image);

由于脚本完成后php进程退出,因此可能并不严格需要销毁,但examples有它,所以我将其包含在内。

此外,您可以使用imagepng()imagegif()imagejpeg() 在 png、gif 和 jpeg 图像格式之间进行选择。这里的png格式应该不错。

【讨论】:

  • 那个也不行,我试过了。但我找到了另一种创建验证码表单的方法,所以我的问题现在无关紧要。谢谢你的帮助。
  • 尝试使用 reCAPTCHA。这真的很容易,不需要 GD 库。请参阅:developers.google.com/recaptcha/docs/php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多