PHP生成图形验证码图片不显示
gd已打开,ob_clean()也用了
主要问题应该在code.php不能正确的输出图片
<?php
ob_clean(); //丢弃输出缓存区中的内容
header("Content-type:image/jpeg"); //以jpeg格式输出,注意上面不能输出任何字符,否则出错
$w = 2000; //设置图片宽和高
$h = 34;
$str = Array(); //用来存储随机码
$string = "abcdefghijklmnopqrstuvwsyz0123456789"; //随机挑选其中4个字符,也可以选择更多,注意循环的时候加上,宽度适当调整
for ($i = 0;$i < 4;$i++){
$str[$i] = $string[rand(0,35)];
$vcode .= $str[$i];
}
session_start(); //启用超全局变量session
$_SESSION["vcode"] = $vcode;
$im = imagecreatetruecolor($w,$h);
$white = imagecolorallocate($im,255,255,255); //第一次调用设置背景色
$black = imagecolorallocate($im,0,0,0); //边框颜色
imagefilledrectangle($im,0,0,$w,$h,$white); //画一矩形填充
imagerectangle($im,0,0,$w-1,$h-1,$black); //画一矩形框
//生成雪花背景
for ($i = 1;$i <200;$i++){
$x = mt_rand(1,$w-9);
$y = mt_rand(1,$h-9);
$color = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagechar($im,1,$x,$y,"*",$color);
}
//将验证码写入图案
for ($i = 0;$i < count($str);$i++){
$x = 13 + $i * ($w-15)/4;
$y = mt_rand(3,$h / 3);
$color = imagecolorallocate($im,mt_rand(0,225),mt_rand(0,150),mt_rand(0,225));
imagechar($im,5,$x,$y,$str[$i],$color);
}
imagejpeg($im);
imagedestroy($im);
?>
<tr>
<td class="you">验证码<span> *</span></td>
<td class="zuo">
<div style="float: left;"><input type="text" name="code" style="width: 100px;"></div>
<div style="float: left;margin-left: 10px;"><img src="code.php" id="checkpic" onclick="changing();"/></div>
</td>
</tr>
<script>
function changing(){
//点击图片,会再次执行code.php文件,后面的参数是防止静态页面缓存导致不能更换
document.getElementById('checkpic').src="code.php?"+Math.random();
}
</script>
$vcode变量没定义
在for上面添加$vcode变量的定义,而且width是不是搞错了。2000px长度,200px吧
ob_clean(); //丢弃输出缓存区中的内容
header("Content-type:image/jpeg"); //以jpeg格式输出,注意上面不能输出任何字符,否则出错
$w = 200; //设置图片宽和高///////////////////////////////////
$h = 34;
$str = Array(); //用来存储随机码
$string = "abcdefghijklmnopqrstuvwsyz0123456789"; //随机挑选其中4个字符,也可以选择更多,注意循环的时候加上,宽度适当调整
$vcode="";///////////////////////////////////
for ($i = 0;$i < 4;$i++){
$str[$i] = $string[rand(0,35)];
$vcode .= $str[$i];
}
以下回答参考GPT并且由妙妙大帅整理:
可能是因为您的验证码图片没有正确输出到HTML页面上,可能是以下几个原因导致的:
您的验证码图片路径不正确。请检查code.php文件是否在与HTML文件相同的目录下,或者根据需要修改路径。
您的HTML代码中没有正确地引用验证码图片。请检查HTML代码,确认标签的src属性是否正确引用了code.php文件,且路径正确。
您的验证码图片没有正确输出。请检查您的PHP代码,确认是否正确输出了图片。可以在浏览器中直接访问code.php文件,查看是否正确输出验证码图片。
另外,如果以上方法都无法解决问题,可以尝试将验证码图片保存为文件,再引用到HTML页面上,看是否能够正确显示验证码图片。