PHP生成图形验证码图片不显示

PHP生成图形验证码图片不显示
gd已打开,ob_clean()也用了
主要问题应该在code.php不能正确的输出图片

img

img



<?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变量没定义

img

在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页面上,看是否能够正确显示验证码图片。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632