我的图片如下:
它从anticot.php获取图像
这是我的anticot.php
<?php
session_start();
$width = 75;
$height = 40;
$length = 3;
$baseList = '1234567890';
$code = "";
$counter = 0;
$image = @imagecreate($width, $height) or die('Kunne ikke velge GD!');
for($i=0; $i<10; $i++){
imageline($image,
mt_rand(0,$width), mt_rand(0,$height),
mt_rand(0,$width), mt_rand(0,$height),
imagecolorallocate($image, mt_rand(150,255),
mt_rand(150,255),
mt_rand(150,255)))) or die('Kunne ikke velge line!');
}
for($i=0, $x=0; $i<$length; $i++){
$actChar = substr($baseList, rand(0, strlen($baseList)-1), 1);
$x += 10 + mt_rand(0,10);
imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $actChar,
imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155)))) or die('Kunne ikke velge GD2!');
$code .= strtolower($actChar)) or die('Kunne ikke velge GD3!');
}
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['securityCode'] = $code;
?>
我已经安装了GD和freetype,有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
语法错误,ComFreek是对的:
imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $actChar,
imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155)))) or die('Kunne ikke velge GD2!');
// /\4?
有一个结束括号太多,应该是
imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $actChar,
imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155))) or die('Kunne ikke velge GD2!');
// 3 is enough
哦,请,不要使用or die
。如果有错误,请修复它。不要使用无意义的or die
消息。让PHP显示错误(如第X行:意外))
另外:不要使用@
错误抑制运算符。如果有错误:修复它,不要掩盖它。将你的ini设置为E_STRICT | E_ALL
并将错误设置为1,然后使用您的代码,直到它没有通知为止。
$image = @imagecreate($width, $height) or die('Kunne ikke velge GD!');
//should be:
$image = imagecreate($width, $height);
它使您的代码更具可读性,如果出现问题,至少您有更好的机会实际知道要修复的内容。像“Kunne ikke velge GD!”之类的东西就像“有些东西不起作用......不知道是什么或在哪里”
答案 1 :(得分:1)
您的代码没有太多问题。删除 for 循环内 imagecolorallocate 末尾的额外括号。它只是有一些语法错误。
<?php
session_start();
$width = 75;
$height = 40;
$length = 3;
$baseList = '1234567890';
$code = "";
$counter = 0;
$image = @imagecreate($width, $height) or die('Kunne ikke velge GD!');
for($i=0; $i<10; $i++){
imageline($image,
mt_rand(0,$width), mt_rand(0,$height),
mt_rand(0,$width), mt_rand(0,$height),
imagecolorallocate($image, mt_rand(150,255),
mt_rand(150,255),
mt_rand(150,255))) or die('Kunne ikke velge line!');
}
for($i=0, $x=0; $i<$length; $i++){
$actChar = substr($baseList, rand(0, strlen($baseList)-1), 1);
$x += 10 + mt_rand(0,10);
imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $actChar,
imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155))) or die('Kunne ikke velge GD2!');
$code .= strtolower($actChar) or die('Kunne ikke velge GD3!');
}
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['securityCode'] = $code;
?>
但更喜欢使用类似recaptcha的内容,这样更容易实现,您可以让用户通过使用它来为书籍数字化做出贡献。