验证码显示x

时间:2023-02-02 10:40:41
我的电脑打开别人的网站是可以显示验证码的,就是我自己用php做的网站验证码显示x,不知道怎么解决?我是用wamp 5运行的,请各位大侠帮帮忙啊?谢谢!

12 个解决方案

#1


那可能你的代码有问题呗。可以贴出来瞧瞧。

#2


我晕、这种交代让人如何回答呢、
你的验证码是图片的不?
是图片的就看看路径、

#3


可能是没有输出图片格式。

#4


估计在验证码类中少了这
header("Content-Type:image/png");

#5


一定不能有META 语句,因为输出的是图象,所以不能有除图象地址之外的任何输出,包含空格

#6


我之前也是用这个验证码的啊!都没有问题,只是后来又重新安啦一次wamp5就变x啦,这个应该怎么做啊?

#7


是不是那个wamp5里面有个可以改的?我怕记得之前也是现实x,我就不知道怎么改啦一下,好啦,现在又重新按一次wamp5就又不行啦,就不知道怎么改啦!会的帮个忙啊?谢谢!

#8


<?
    //随机字符串种子,可以换成字母或其他英文字符
    $glbVerifySeed = "AbcDefGhijkL1234567890mnOpqRstuvwxYz";
    main();
        
    function main() {
        session_start();
        
        $verifyCode = getRandomCode();
        $_SESSION["verifyCode"] = $verifyCode;
        $imgWidth = $_REQUEST["width"];
        $imgHeight = $_REQUEST["height"];
        $imgFont = $_REQUEST["font"];
        
        if($imgWidth == "") $imgWidth = 50;
        if($imgHeight == "") $imgHeight = 18;
        if($imgFont == "") $imgFont = 6;
        doOutputImg($verifyCode, $imgWidth, $imgHeight, $imgFont);
    }
    
    //获取随机数字字符串
    function getRandomCode($length=4) {
        global $glbVerifySeed;
        
        $bgnIdx = 0;
        $endIdx = strlen($glbVerifySeed)-1;
        
        $code = "";
        for($i=0; $i<$length; $i++) {
            $curPos = rand($bgnIdx, $endIdx);
            $code .= substr($glbVerifySeed, $curPos, 1);
        }
        
        return $code;
    }
    
    //输出校验码图像
    function doOutputImg($string, $imgWidth, $imgHeight, $imgFont,
        $imgFgColorArr=array(0,0,0), $imgBgColorArr=array(255,255,255)) {
        $image = imagecreatetruecolor($imgWidth, $imgHeight);

        //用白色背景加黑色边框画个方框
        $backColor = imagecolorallocate($image, 255, 255, 255);
        $borderColor = imagecolorallocate($image, 255, 255, 255);
        imagefilledrectangle($image, 0, 0, $imgWidth - 1, $imgHeight - 1, $backColor);
        imagerectangle($image, 0, 0, $imgWidth - 1, $imgHeight - 1, $borderColor);

        $imgFgColor = imagecolorallocate ($image, $imgFgColorArr[0], $imgFgColorArr[1], $imgFgColorArr[2]);
        doDrawStr($image, $string, $imgFgColor, $imgFont);
        doPollute($image, 64);

        header('Content-type: image/png');
        imagepng($image);
        imagedestroy($image);
    }

    //画出校验码
    function doDrawStr($image, $string, $color, $imgFont) {
        $imgWidth = imagesx($image);
        $imgHeight = imagesy($image);
        
        $count = strlen($string);
        $xpace = ($imgWidth/$count);
        
        $x = ($xpace-6)/2;
        $y = ($imgHeight/2-8);
        for ($p = 0; $p<$count;  $p ++) {
            $xoff = rand(-2, +2);
            $yoff = rand(-2, +2);
            $curChar = substr($string, $p, 1);
            imagestring($image, $imgFont, $x+$xoff, $y+$yoff, $curChar, $color);
            $x += $xpace;
        }

        return 0;
    }
    
    //画出一些杂点
    function doPollute($image, $times) {   
        $imgWidth = imagesx($image);
        $imgHeight = imagesy($image);
        for($j=0; $j<$times; $j++) {
            $x = rand(0, $imgWidth);
            $y = rand(0, $imgHeight);
            
            $color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
            imagesetpixel($image, $x, $y, $color);
        }
    }
?>

#9


我显示正常哦~你把文件格式改为utf8无bom头

#10


引用 9 楼  的回复:
我显示正常哦~你把文件格式改为utf8无bom头

改在哪里啊?我的以前也显示正常。就是不知道现在怎么就不行啦!

#11


好崩溃哦!帮帮忙啊!谢谢!

#12


是配置文件中php.ini中设置不对,将图形库的那个注释去掉就可以

#1


那可能你的代码有问题呗。可以贴出来瞧瞧。

#2


我晕、这种交代让人如何回答呢、
你的验证码是图片的不?
是图片的就看看路径、

#3


可能是没有输出图片格式。

#4


估计在验证码类中少了这
header("Content-Type:image/png");

#5


一定不能有META 语句,因为输出的是图象,所以不能有除图象地址之外的任何输出,包含空格

#6


我之前也是用这个验证码的啊!都没有问题,只是后来又重新安啦一次wamp5就变x啦,这个应该怎么做啊?

#7


是不是那个wamp5里面有个可以改的?我怕记得之前也是现实x,我就不知道怎么改啦一下,好啦,现在又重新按一次wamp5就又不行啦,就不知道怎么改啦!会的帮个忙啊?谢谢!

#8


<?
    //随机字符串种子,可以换成字母或其他英文字符
    $glbVerifySeed = "AbcDefGhijkL1234567890mnOpqRstuvwxYz";
    main();
        
    function main() {
        session_start();
        
        $verifyCode = getRandomCode();
        $_SESSION["verifyCode"] = $verifyCode;
        $imgWidth = $_REQUEST["width"];
        $imgHeight = $_REQUEST["height"];
        $imgFont = $_REQUEST["font"];
        
        if($imgWidth == "") $imgWidth = 50;
        if($imgHeight == "") $imgHeight = 18;
        if($imgFont == "") $imgFont = 6;
        doOutputImg($verifyCode, $imgWidth, $imgHeight, $imgFont);
    }
    
    //获取随机数字字符串
    function getRandomCode($length=4) {
        global $glbVerifySeed;
        
        $bgnIdx = 0;
        $endIdx = strlen($glbVerifySeed)-1;
        
        $code = "";
        for($i=0; $i<$length; $i++) {
            $curPos = rand($bgnIdx, $endIdx);
            $code .= substr($glbVerifySeed, $curPos, 1);
        }
        
        return $code;
    }
    
    //输出校验码图像
    function doOutputImg($string, $imgWidth, $imgHeight, $imgFont,
        $imgFgColorArr=array(0,0,0), $imgBgColorArr=array(255,255,255)) {
        $image = imagecreatetruecolor($imgWidth, $imgHeight);

        //用白色背景加黑色边框画个方框
        $backColor = imagecolorallocate($image, 255, 255, 255);
        $borderColor = imagecolorallocate($image, 255, 255, 255);
        imagefilledrectangle($image, 0, 0, $imgWidth - 1, $imgHeight - 1, $backColor);
        imagerectangle($image, 0, 0, $imgWidth - 1, $imgHeight - 1, $borderColor);

        $imgFgColor = imagecolorallocate ($image, $imgFgColorArr[0], $imgFgColorArr[1], $imgFgColorArr[2]);
        doDrawStr($image, $string, $imgFgColor, $imgFont);
        doPollute($image, 64);

        header('Content-type: image/png');
        imagepng($image);
        imagedestroy($image);
    }

    //画出校验码
    function doDrawStr($image, $string, $color, $imgFont) {
        $imgWidth = imagesx($image);
        $imgHeight = imagesy($image);
        
        $count = strlen($string);
        $xpace = ($imgWidth/$count);
        
        $x = ($xpace-6)/2;
        $y = ($imgHeight/2-8);
        for ($p = 0; $p<$count;  $p ++) {
            $xoff = rand(-2, +2);
            $yoff = rand(-2, +2);
            $curChar = substr($string, $p, 1);
            imagestring($image, $imgFont, $x+$xoff, $y+$yoff, $curChar, $color);
            $x += $xpace;
        }

        return 0;
    }
    
    //画出一些杂点
    function doPollute($image, $times) {   
        $imgWidth = imagesx($image);
        $imgHeight = imagesy($image);
        for($j=0; $j<$times; $j++) {
            $x = rand(0, $imgWidth);
            $y = rand(0, $imgHeight);
            
            $color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
            imagesetpixel($image, $x, $y, $color);
        }
    }
?>

#9


我显示正常哦~你把文件格式改为utf8无bom头

#10


引用 9 楼  的回复:
我显示正常哦~你把文件格式改为utf8无bom头

改在哪里啊?我的以前也显示正常。就是不知道现在怎么就不行啦!

#11


好崩溃哦!帮帮忙啊!谢谢!

#12


是配置文件中php.ini中设置不对,将图形库的那个注释去掉就可以