我在用gd库生成验证码图片时,报错 :图像 “http://localhost/php/kkk.php” 因其本身有错无法显示。以下是我的代码:
<?php
//文件头...
@header("Content-type: image/png");
session_start();
//创建真彩色白纸
$im = @imagecreatetruecolor(50, 20) or die("建立图像失败");
//获取背景颜色
$background_color = imagecolorallocate($im, 255, 255, 255);
//填充背景颜色(这个东西类似油桶)
imagefill($im, 0, 0, $background_color);
//获取边框颜色
$border_color = imagecolorallocate($im, 200, 200, 200);
//画矩形,边框颜色200,200,200
imagerectangle($im, 0, 0, 49, 19, $border_color);
//逐行炫耀背景,全屏用1或0
for($i=2;$i<18;$i++){
//获取随机淡色
$line_color = imagecolorallocate($im,rand(200, 255),rand(200, 255),rand(200, 255));
//画线
imageline($im, 2, $i, 47, $i, $line_color);
}
//设置字体大小
$font_size=12;
//设置印上去的文字
//$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Str[0] = "abcdefghijkmmnnpqrstuvwxyz";
//$Str[1] = "23234567891234567899323456";
//获取第1个随机文字
$imstr[0]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[0]["x"] = rand(2, 5);
$imstr[0]["y"] = rand(1, 4);
//获取第2个随机文字
$imstr[1]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[1]["x"] = $imstr[0]["x"] + $font_size-1 + rand(0,1);
$imstr[1]["y"] = rand(1, 3);
//获取第3个随机文字
$imstr[2]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[2]["x"] = $imstr[1]["x"] + $font_size-1+rand(0,1);
$imstr[2]["y"] = rand(1, 4);
//获取第4个随机文字
$imstr[3]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[3]["x"] = $imstr[2]["x"] + $font_size-1+rand(0,1);
$imstr[3]["y"] = rand(1, 3);
$authcode = $imstr[0]["s"].$imstr[1]["s"].$imstr[2]["s"]. $imstr[3]["s"];
//写入随机字串
for($i=0;$i<4;$i++){
//获取随机较深颜色
$text_color = imagecolorallocate($im,rand(50, 180),rand(50, 180),rand(50, 180));
//画文字
imagechar($im, $font_size, $imstr[$i]["x"], $imstr[$i]["y"], $imstr[$i]["s"], $text_color);
}
//显示图片
imagepng($im);
//销毁图片
imagedestroy($im);
$_SESSION['authcode'] = $authcode;
?>
<?php
//文件头...
@header("Content-type: image/png");
session_start();
//创建真彩色白纸
$im = @imagecreatetruecolor(50, 20) or die("建立图像失败");
//获取背景颜色
$background_color = imagecolorallocate($im, 255, 255, 255);
//填充背景颜色(这个东西类似油桶)
imagefill($im, 0, 0, $background_color);
//获取边框颜色
$border_color = imagecolorallocate($im, 200, 200, 200);
//画矩形,边框颜色200,200,200
imagerectangle($im, 0, 0, 49, 19, $border_color);
//逐行炫耀背景,全屏用1或0
for($i=2;$i<18;$i++){
//获取随机淡色
$line_color = imagecolorallocate($im,rand(200, 255),rand(200, 255),rand(200, 255));
//画线
imageline($im, 2, $i, 47, $i, $line_color);
}
//设置字体大小
$font_size=12;
//设置印上去的文字
//$Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Str[0] = "abcdefghijkmmnnpqrstuvwxyz";
//$Str[1] = "23234567891234567899323456";
//获取第1个随机文字
$imstr[0]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[0]["x"] = rand(2, 5);
$imstr[0]["y"] = rand(1, 4);
//获取第2个随机文字
$imstr[1]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[1]["x"] = $imstr[0]["x"] + $font_size-1 + rand(0,1);
$imstr[1]["y"] = rand(1, 3);
//获取第3个随机文字
$imstr[2]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[2]["x"] = $imstr[1]["x"] + $font_size-1+rand(0,1);
$imstr[2]["y"] = rand(1, 4);
//获取第4个随机文字
$imstr[3]["s"] = $Str[rand(0, 0)][rand(0, 25)];
$imstr[3]["x"] = $imstr[2]["x"] + $font_size-1+rand(0,1);
$imstr[3]["y"] = rand(1, 3);
$authcode = $imstr[0]["s"].$imstr[1]["s"].$imstr[2]["s"]. $imstr[3]["s"];
//写入随机字串
for($i=0;$i<4;$i++){
//获取随机较深颜色
$text_color = imagecolorallocate($im,rand(50, 180),rand(50, 180),rand(50, 180));
//画文字
imagechar($im, $font_size, $imstr[$i]["x"], $imstr[$i]["y"], $imstr[$i]["s"], $text_color);
}
//显示图片
imagepng($im);
//销毁图片
imagedestroy($im);
$_SESSION['authcode'] = $authcode;
?>
解决方案 »
- Mysql命令把excel导入数据库,空日期怎么办?load data local infile 'D:\11.txt' into
- php 正则问题
- 求一个PHP,AJAX的会员在线即时聊天程序
- 想找一个smarty+php的简单网站的示例
- MYSQL哪种查询更快一点
- apache的web服务器,比如访问一网站:http://www.aaa.cn,如何使网页跳自动转到http://www.aaa.com.cn,这个index.php如何写啊
- 最近去面试遇到的问题(php),请大家帮帮忙.
- 寻找一个有关字符串的函数
- 在线用户统计问题!
- 如何去掉字符串中的换行符?
- 为什么循环输出会死循环?
- 我用PHP+MYSQL编程开发一个新闻系统,为何PHP对空格输出不了?
怎么查看Gd 库的版本??
我现在用的是Apache 2.2.13 php 5.3.3的
phpinfo();
?>访问这个页面就能看到版本
我的GD 开了
GD Version bundled (2.0.34 compatible)
问题已解决。
代码是正确的。
我在用UTF-8格式保存文件时,选择了添加一个Unicode 标签(BOM),删除这个选项图片就能正常显示了。
您是不是调用不对啊!
正确的调用应该是
<input type=hidden name=logincode><img src="logincode.php">
您是不是这样调用的啊!
另外需要session_start();
语句都要对了!