一個漂亮的php驗證碼類(分享)

下面小灰灰就爲你們分享一個漂亮的php驗證碼類。須要的朋友能夠過來參考下。 效果圖: 效果圖php

直接上代碼:session

ValidateCode.class.phpdom

<?php

//驗證碼類
class ValidateCode {
    private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ123456789';//隨機因子
    private $code;//驗證碼
    private $codelen = 5;//驗證碼長度
    private $width = 130;//寬度
    private $height = 40;//高度
    private $img;//圖形資源句柄
    private $font;//指定的字體
    private $fontsize = 20;//指定字體大小
    private $fontcolor;//指定字體顏色
    //構造方法初始化
    public function __construct() {
        $this->font = '../font/elephant.ttf';//注意字體路徑要寫對,不然顯示不了圖片
    }
    //生成隨機碼
    private function createCode() {
        $_len = strlen($this->charset)-1;
        for ($i=0;$i<$this->codelen;$i++) {
            $this->code .= $this->charset[mt_rand(0,$_len)];
        }
    }
    //生成背景
    private function createBg() {
        $this->img = imagecreatetruecolor($this->width, $this->height);
        $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
        imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
    }
    //生成文字
    private function createFont() {
        $_x = $this->width / $this->codelen;
        for ($i=0;$i<$this->codelen;$i++) {
            $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
            imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
        }
    }
    //生成線條、雪花
    private function createLine() {
        //線條
        for ($i=0;$i<6;$i++) {
            $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
            imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
        }
        //雪花
        for ($i=0;$i<100;$i++) {
            $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
            imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
        }
    }
    //輸出
    private function outPut() {
        header('Content-type:image/png');
        imagepng($this->img);
        imagedestroy($this->img);
    }
    //對外生成
    public function doimg() {
        $this->createBg();
        $this->createCode();
        $this->createLine();
        $this->createFont();
        $this->outPut();
    }
    //獲取驗證碼
    public function getCode() {
        return strtolower($this->code);
    }
}

captcha.php(用於調用該類)字體

session_start();
require './ValidateCode.class.php';  //先把類包含進來,實際路徑根據實際狀況進行修改。
$_vc = new ValidateCode();  //實例化一個對象
$_vc->doimg();  
$_SESSION['authnum_session'] = $_vc->getCode();//驗證碼保存到SESSION中

引用到頁面中:ui

<img  title="點擊刷新" src="./captcha.php" align="absbottom" onclick="this.src='captcha.php?'+Math.random();"></img>

完整demo下載:點擊下載this

相關文章
相關標籤/搜索