• PHP验证码代码


    <?php
    //// 验证码代码

    $code = new Code();
    $code->outImage();

    class Code {
    ///验证码个数
    protected $number;
    ///验证码类型
    protected $codeType;
    ///图形宽度
    protected $width;
    ///图形高度
    protected $height;
    ///图形资源
    protected $image;
    ///验证码字符串
    protected $code;

    public function __construct( $number=4, $codeType=2, $width=100, $height=50 ) {
    ///初始化自己的成员属性
    $this->number = $number;
    $this->codeType = $codeType;
    $this->width = $width;
    $this->height = $height;

    ////生成验证码函数
    $this->code = $this->createCode();

    }


    public function __destruct(){
    imagedestroy($this->image);
    }


    public function __get( $name ) {
    if ( $name == 'code' ) {
    return $this->code;
    }
    return false;
    }

    protected function createCode() {
    ///通过验证码类型生成不同的验证码
    switch ( $this->codeType ) {
    case 0: ///纯数字
    $code = $this->getNumberCode();
    break;
    case 1: ///纯字母
    $code = $this->getCharCode();
    break;
    case 2: ///数字和字母混合
    $code = $this->getNumCharCode();
    break;
    default:
    die( "不支持这种验证码类型" );
    }
    return $code;
    }

    protected function getNumberCode() {
    $str = join( '', range( 0, 9 ) );
    return substr( str_shuffle( $str ), 0, $this->number );
    }
    protected function getCharCode() {
    $str = join( '', range( 'a', 'z' ) );
    $str = $str . strtoupper( $str );
    return substr( str_shuffle( $str ), 0, $this->number );
    }

    protected function getNumCharCode() {
    $numStr = join( '', range( 0, 9 ) );
    $str = join( '', range( 'a', 'z' ) );
    $str = $numStr . $str . strtoupper( $str );
    return substr( str_shuffle( $str ), 0, $this->number );
    }


    protected function createImage(){
    $this->image=imagecreatetruecolor($this->width,$this->height);
    }

    protected function fillBack(){
    imagefill($this->image,0,0,$this->lightColor());
    }

    protected function lightColor(){
    return imagecolorallocate($this->image,mt_rand(130,255),mt_rand(130,255),mt_rand(130,255));
    }
    protected function darkColor(){
    return imagecolorallocate($this->image,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120));
    }
    protected function drawChar(){
    $width=ceil($this->width/$this->number);
    for($i=0;$i<$this->number;$i++){
    $x=mt_rand($i*$width+5,($i+1)*$width-10);
    $y=mt_rand(0,$this->height-15);

    imagechar($this->image,5,$x,$y,$this->code[$i],$this->darkColor());
    }
    }

    protected function drawDisturb(){
    for($i=0;$i<150;$i++){
    $x=mt_rand(0,$this->width);
    $y=mt_rand(0,$this->height);
    imagesetpixel($this->image,$x,$y,$this->lightColor());
    }
    }

    protected function show(){
    header('Content-Type:image/png');
    imagepng($this->image);
    }


    public function outImage(){
    ///创建画布
    $this->createImage();
    ///填充背景色
    $this->fillBack();
    ///将验证码字符串画到画布中
    $this->drawChar();
    ///添加干扰元素
    $this->drawDisturb();
    ///输出并且显示
    $this->show();

    }

    }

    ?>

  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/summerGraden/p/11543856.html
Copyright © 2020-2023  润新知