为了账号安全,请及时绑定邮箱和手机立即绑定

想让验证内容显示在输入框中,求教QAQ

自己试了一下 ,发现图片生成的与输入框中生成的不一样?

有大佬能整个方法不QAQ

--------------------------point.php(生成图片验证内容)

<?php

class yanzhengma

{

    private $image;//$image变量为私有;

    

    //定义一个公有类型的方法

    public function _chuangjianditu()

    {

        //创建一张底图

        $this ->image = imagecreatetruecolor(200, 60);

        //为一幅图像分配颜色

        $bgcolor=imagecolorallocate($this->image,255,255,255);

        //区域填充 imagefill()  在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color

        //颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。

        imagefill($this->image, 0, 0, $bgcolor);

        

    }

    public function font(){

        return "唧唧复唧唧木兰当户织不闻机杼声惟闻女叹息问女何所思问女何所忆女亦无所思女亦无所忆昨夜见军帖可汗大点兵军书十二卷卷卷有爷名阿爷无大儿木兰无长兄愿为市鞍马从此替爷征东市买骏马西市买鞍鞯南市买辔头北市买长鞭旦辞爷娘去暮宿黄河边不闻爷娘唤女声但闻黄河流水鸣溅溅旦辞黄河去暮至黑山头不闻爷娘唤女声但闻燕山胡骑鸣啾啾万里赴戎机关山度若飞朔气传金柝寒光照铁衣将军百战死壮士十年归归来见天子天子坐明堂策勋十二转赏赐百千强可汗问所欲木兰不用尚书郎愿驰千里足,送儿还故乡";

    } 

    public function captcha_cn(){

        session_start();

        

        $fontface = 'F:\Demo\project\simkai.ttf';

//         $str = '唧唧复唧唧木兰当户织不闻机杼声惟闻女叹息问女何所思问女何所忆女亦无所思女亦无所忆昨夜见军帖可汗大点兵军书十二卷卷卷有爷名阿爷无大儿木兰无长兄愿为市鞍马从此替爷征东市买骏马西市买鞍鞯南市买辔头北市买长鞭旦辞爷娘去暮宿黄河边不闻爷娘唤女声但闻黄河流水鸣溅溅旦辞黄河去暮至黑山头不闻爷娘唤女声但闻燕山胡骑鸣啾啾万里赴戎机关山度若飞朔气传金柝寒光照铁衣将军百战死壮士十年归归来见天子天子坐明堂策勋十二转赏赐百千强可汗问所欲木兰不用尚书郎愿驰千里足送儿还故乡';

        $str = $this->font();

        $strdb = str_split($str,3);

        

        $capth_code="";

        for($i=0;$i<4;$i++){

            $fontcolor=imagecolorallocate($this->image,rand(20,120),rand(20,120),rand(20,120));

            $index = rand(0,count($strdb)-1);

            $cn = $strdb[$index];

            $capth_code.=$cn;

            imagettftext($this->image, mt_rand(20,24), mt_rand(-60,60),(40*$i+20), mt_rand(25,45), $fontcolor, $fontface, $cn);

        }

        $_SESSION['AUTHCODE']=$capth_code;

        

        

    }

    //生成干扰元素

    public function point()

    {

        for($i=0;$i<200;$i++)

        {

            //为一副图像分配颜色,随机生成点的颜色

            $pointcolor = imagecolorallocate($this->image, rand(50,200), rand(50,200), rand(50,200));

            imagesetpixel($this->image,rand(1,199),rand(1,59),$pointcolor);

        }

        for($i=0;$i<3;$i++){

            //随机生成线

            $linecolor = imagecolorallocate($this->image, rand(80,250), rand(80,250), rand(80,255));

            imageline($this->image,rand(1,199), rand(1,59), rand(1,199), rand(1,59), $linecolor);

        }

    }

    public function output(){

        header('content-type: image/png');

        imagepng($this->image);

    }

    

}


$ojb = new yanzhengma();


$ojb ->_chuangjianditu();

$ojb ->captcha_cn();

$ojb ->point();

$ojb ->output();

<?php

session_start();


---------------------------------------index.php(界面)

if (isset($_REQUEST['authcode'])) {

    if ($_REQUEST['authcode'] == $_SESSION['AUTHCODE']) {

        echo '<font color="green">验证成功</font>';

    } else {

        echo '<font color="red">验证失败</font>';

    }

    exit();

}



?>


<!DOCTYPE html>

<html>


<head>

<meta charset="utf-8" />

<title>验证页面</title>

</head>

<body>

<form method="post" action="./index.php">

<p>

验证码内容: <img id="point" border="1" src="./point.php?r=<?php rand();?>"

width="200" height="60">

</p>

<a href="javascript:viod(0)"

onclick="document.getElementById('point').src='./point.php?r='+Math.random()">看不清?</a>

<p>

请输入验证码:<input type="text" name="authcode" value="" />

</p>

<p>

<input type="submit" value="提交" style="padding: 6px 20px">

</p>

<p>

<input type="text" value="<?php echo $_SESSION['AUTHCODE'] ?>">

</p>

</form>

</body>

</html>



正在回答

举报

0/150
提交
取消

想让验证内容显示在输入框中,求教QAQ

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信