•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

简述php设想验证码的历程【php问题】,php,验证码

摘要: 简述php设想验证码的历程php运用GD库生成验证码一、绘图步骤:1.建立画布,分派色彩,运用以下两个函数(能够在php手册GD库函数中找到):imagecreatetruecol...

简述php设想验证码的历程

php运用GD库生成验证码

一、绘图步骤:

1.建立画布,分派色彩,运用以下两个函数(能够在php手册GD库函数中找到):

imagecreatetruecolor()

imagecolorallocate()

2.绘画历程:

imagefill()

imagettftext()

imagesetpixel()

imageline()

3.输出图象:

header(“Content-Type:image/png”);

imagepng();

imagejpeg();

4.烧毁图片(开释内存)

imagedestroy();

二、绘图具体步骤

生成验证码字符串

private function getCode(){
        $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $t='';
        for($i=0;$i<$this->m;$i++){
            $t.=$str[rand(0,$this->type['letter'])];
        }
        return $t;
    }

画出验证码

function drawCode(){
        $code=$this->getCode();//猎取验证码字符串
        imagefill($this->im, 0, 0, $this->bg);
        for ($i=0; $i <200 ; $i++) { 
            imagesetpixel($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,255));
        }
        imageline($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,$this->width), rand(0,$this->height), rand(0,255));
        $c=imagecolorallocate($this->im, rand(0,200), rand(0,200), rand(0,200));
        for($i=0;$i<$this->m;$i++){
            imagettftext($this->im, 18, rand(-40,40), 8+(18*$i), 24, $c, "georgia.ttf",$code[$i] );
        }
    }

输出图象

function printImage(){
        $this->drawCode();
        header("Content-Type:image/jpeg");
        imagepng($this->im);
        $this->destroy();
    }
    function destroy(){
        imagedestroy($this->im);
    }

三、代码演示

<?php
/**
* 验证码绘图类
*/
class Image 
{
    private $width;
    private $height;
    private $im;
    private $bg;
    private $m;
    private $type=array('num' => 9,'letter' => 61 );
    function __construct($width,$height,$m)
    {
        $this->width=$width;
        $this->height=$height;
        $this->m=$m;
        $this->im=imagecreatetruecolor($this->width, $this->height);
        $this->bg=imagecolorallocate($this->im, 220, 220, 220);
    }
    private function getCode(){
        $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $t='';
        for($i=0;$i<$this->m;$i++){
            $t.=$str[rand(0,$this->type['letter'])];
        }
        return $t;
    }
    function drawCode(){
        $code=$this->getCode();//猎取验证码字符串
        imagefill($this->im, 0, 0, $this->bg);
        //加滋扰点
        for ($i=0; $i <200 ; $i++) { 
            imagesetpixel($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,255));
        }
        //加滋扰线
        imageline($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,$this->width), rand(0,$this->height), rand(0,255));
        $c=imagecolorallocate($this->im, rand(0,200), rand(0,200), rand(0,200));
        for($i=0;$i<$this->m;$i++){
            imagettftext($this->im, 18, rand(-40,40), 8+(18*$i), 24, $c, "georgia.ttf",$code[$i] );
        }
    }
    function printImage(){
        $this->drawCode();
        header("Content-Type:image/jpeg");
        imagepng($this->im);
        $this->destroy();
    }
    function destroy(){
        imagedestroy($this->im);
    }
}
function unit_test(){
    $obj=new Image(20*4,30,4);
    $obj->printImage();
}
unit_test();
?>

更多PHP相干学问,请接见ki4网!

以上就是简述php设想验证码的历程的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号