我试图在php中制作验证码。这是我的代码:
$amountChars = 5;
$randString = substr(md5(uniqid()), 0, $amountChars);
$img = imagecreatfromjpeg("noise.jpg");
imageantialias($img, true);
$x = 20;
$y = 35;
$deltaX = 40;
for($i = 0; $i < $amountChars; $i++){
$size = rand(18, 28);
$r = rand(0,152);
$g = rand(0,152);
$b = rand(0,152);
$color = imagecolorallocate($img, $r, $g, $b);
$angle = -30 + rand(0, 60);
imagettftext($img, $size, $angle, $x, $y, $color, "Blokletters-Balpen.ttf", $randString{$i});
$x += $deltaX;
}
header("Content-Type: image/png");
imagePNG($img);
问题是,它不起作用。我在一个小时内搜索了一个错误,但没有成功。
答案 0 :(得分:0)
再试一次,因为我因为没有给出真正的答案而受到抨击......一步一步地浏览你的代码我能够通过以下修改来运行它:
$amountChars = 5;
$randString = substr(md5(uniqid()), 0, $amountChars);
// TYPO: MISSING E
$img = imagecreatefromjpeg("noise.jpg");
// IT'S POSSIBLE THIS FUNCTION ISN'T DEFINED:
// SEE REFERENCE LINK BELOW CODE
// imageantialias($img, true);
$x = 20;
$y = 35;
$deltaX = 40;
for($i = 0; $i < $amountChars; $i++) {
$size = rand(18, 28);
$r = rand(0,152);
$g = rand(0,152);
$b = rand(0,152);
$color = imagecolorallocate($img, $r, $g, $b);
$angle = -30 + rand(0, 60);
// ADDED ./ TO FONT PATH, CHANGED $randString{$i} TO $randString[$i]
imagettftext($img, $size, $angle, $x, $y, $color, "./Blokletters-Balpen.ttf", $randString[$i]);
// WHY IS THIS HERE?
$x += $deltaX;
}
header("Content-Type: image/png");
imagePNG($img);
imageantialias
函数doesn't appear to be available on all systems。我没有,所以我只是评论它。
这些更改至少应该让您的代码正常运行。如果您正在寻找更深入的示例,我建议您查看this tutorial。
答案 1 :(得分:-1)
我接受了您的代码,创建了noise.jpg
张图片,甚至从这里下载了Blokletters-Balpen.ttf
以查看内容是什么。快速查看代码会显示错误信息:
$img = imagecreatfromjpeg("noise.jpg");
不应该是imagecreatefromjpeg
吗?请注意原始代码中缺少的e
:
$img = imagecreatefromjpeg("noise.jpg");
它应该现在可以使用,我想?除非有问题,否则您将其置于<img src="image_capcha.php" />
?