>  기사  >  백엔드 개발  >  PHP에서 인증코드를 설계하는 과정을 간략하게 설명합니다.

PHP에서 인증코드를 설계하는 과정을 간략하게 설명합니다.

藏色散人
藏色散人원래의
2019-11-01 09:42:012111검색

PHP에서 인증코드를 설계하는 과정을 간략하게 설명합니다.

PHP 디자인 검증 코드 과정에 대한 간략한 설명

php 사용법 GD 라이브러리는 인증 코드를 생성합니다

1. 그리기 단계:

1 캔버스를 생성하고 색상을 지정하고 다음 두 가지 기능을 사용합니다(PHP에서 찾을 수 있음). 수동 GD 라이브러리 기능) :

imagecreatetruecolor()

imagecolorallocate()

2. 페인팅 프로세스:

imagefill ()#🎜🎜 #

imagettftext()

imagesetpixel()

imageline()

3. 🎜##🎜🎜 #header(“콘텐츠 유형:이미지/png”);

imagepng();

imagejpeg();

#🎜🎜 #4. 사진 삭제(메모리 해제)

imagedestroy();

2. 특정 그리기 단계

인증 코드 문자열 생성

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

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] );
        }
    }

Output Image

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

3. 코드 데모

 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=&#39;&#39;;
        for($i=0;$i<$this->m;$i++){
            $t.=$str[rand(0,$this->type[&#39;letter&#39;])];
        }
        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 관련 지식을 더 보려면 #🎜를 방문하세요. 🎜# PHP 중국어 웹사이트

!

위 내용은 PHP에서 인증코드를 설계하는 과정을 간략하게 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 세션 원리다음 기사:PHP 세션 원리