PHPmvc封装英文验证码生成

最近在学习深入学习手撸PHPmvc框架,目前进度到了英文验证码这一块了,怕以后可能会用到所以mark下来。

<?php
/**
 * Created by PhpStorm.
 * User: nobita
 * Date: 8/18
 * Time: 17:52
 */

class CaptchaLib
{
    private $length;
    private $font=5;
    public function __construct($length=4,$font=5)
    {
        $this->length = $length;
        $this->font = $font;
    }

    private function generalCode(){
        $charArray = array_merge(range('A','Z'),range('a','z'),range(0,9));
        $index = array_rand($charArray,4);
        shuffle($index);
        $str='';
        foreach ($index as $i){
            $str .= $charArray[$i];
        }
        return $str;
    }

    public function generalCaptcha(){
        $code = $this->generalCode();
        $_SESSION['code'] = $code;
        $bgPath = LIB_PATH.'captcha/captcha.jpg';
        $img = imagecreatefromjpeg($bgPath);
        $color = imagecolorallocate($img,0,0,0);
        if (rand(1,2) == 2)
            $color = imagecolorallocate($img,255,255,255);
        $x = (imagesx($img)-imagefontwidth($this->font)*strlen($code))/2;
        $y = (imagesy($img)-imagefontheight($this->font))/2;
        imagestring($img,$this->font,$x,$y,$code,$color);
        header('content-type:image/png');
        imagepng($img);
        imagedestroy($img);
    }

    public function checkCaptcha($code){
        return strtolower($code) == strtolower($_SESSION['code']);
    }
}

控制器中校验验证码

$captcha = new CaptchaLib();
            $code = $_POST['captcha'];
            if (!$captcha->checkCaptcha($code)){
                return $this->error('/index.php?p=admin&c=login&a=index','验证码错误!');
            }
Comments: 0

「人生在世,留句话给我吧」

提交评论