日期:2014-05-16  浏览次数:20534 次

创建验证码,突然出现大量错误,麻烦帮忙看看,谢谢

我在尝试编写一个验证码的php脚本,先开始提示image函数不可用,于是我就添加了php5-gd
安装完成后,发现还是提士找不到函数
于是我就使用了sudo /etc/init.d/apache2 focus-reload
然后 提示函数问题了,却显示大量警告信息
我查看了修改 php.ini文件  error.report =E_ALL & ~E_NOTICE
重启服务器但是还是如此、
验证码的生成代码如下

<?php
session_start();
//set some important identfy constants
define('IDENTFY_NUM',5);
define('IDENTFY_WIDTH',75);
define('IDENTFY_HEIGT',25);
//create the random pass-phrase
$pass_phrase="";
for($i=0;$i<IDENTFY_NUM;$i++){
$pass_phrase.=chr(rand(97,122));

}
$_SESSION['pass_phrase']=sha1($pass_phrase);
$img=imagecreatetruecolor(IDENTFY_WIDTH,IDENTFY_HEIGHT);
$bg_color=imagecolorallocate($img,255,255,255);
$text_color=imagecolorallocate($img,0,0,0);
$graphic_color=imagecolorallocate($img,64,64,64);

imagefilledrectangle($img,0,0,IDENTFY_WIDTH,IDENTFY_HEIGHT,$bg_color);

//Draw random lines
for($i=0;$i<5;$i++){
imageline($img,0,rand()%IDENTFY_HEIGHT,IDENTFY_WIDTH,rand()%INDENTFY_HEIGHT,$graphic_color);
}
for($i=0;$i<50;$i++){
imagesetpixel($img,rand()%IDENTFY_WIDTH,rand()%IDENTFY_HEIGHT,$graphic_color);

}
//Draw the string
imagettftext($img,18,0,5,IDENTFY-5,$text_color,"Courier New Bold.ttf",$pass_phrase);
header("Content-type:image/png");
imagepng($img);
imagedestroy($img);
?>


------解决方案--------------------
自己检查一下,常量的定义和使用不一致
------解决方案--------------------
已经提示的很明显 23行 你的除法里面分母不能是零  由于这里有错误 倒置$img变量里有杂项值 使得27行的imagesetpixel函数没有一个可用的图片资源

for($i=0;$i<5;$i++){
        imageline($img,0,rand()%IDENTFY_HEIGHT,IDENTFY_WIDTH,rand()%INDENTFY_HEIGHT,$graphic_color);
    }



 for($i=0;$i<50;$i++){
        imagesetpixel($img,rand()%IDENTFY_WIDTH,rand()%IDENTFY_HEIGHT,$graphic_color);
 
    }