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>