<form id="55n5d"></form>
    <form id="55n5d"></form> <noframes id="55n5d">

    <em id="55n5d"><address id="55n5d"></address></em>

        <form id="55n5d"></form>

        一個實用的php驗證碼類

        php by 黃業興 at 2019-12-06

        本文實例為大家分享了一個實用的php驗證碼類,供大家參考,具體內容如下

        //驗證碼類
        class ValidateCode {
             private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機因子
             private $code;//驗證碼
             private $codelen = 4;//驗證碼長度
             private $width = 130;//寬度
             private $height = 50;//高度
             private $img;//圖形資源句柄
             private $font;//指定的字體
             private $fontsize = 20;//指定字體大小
             private $fontcolor;//指定字體顏色
             //構造方法初始化
             public function __construct() {
                $this->font = dirname(__FILE__).'/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);
             }
        }
        

        使用方法:

        1、先把驗證碼類保存為一個名為 ValidateCode.class.php 的文件;

        2、新建一個名為 captcha.php 的文件進行調用該類;

        captcha.php

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

        html部分代碼如下

        <div class="control-group">
            <label class="control-label">驗證碼:</label>
            <div class="controls">
               <input type="text" name="validate" value="" style="width:10%">
               <img id="verify_img" src="captcha.php" alt="驗證碼" onclick="refreshVerify()">
               <a href="javascript:refreshVerify()">點擊刷新</a>
               <script>
                    function refreshVerify() {
                        var ts = Date.parse(new Date())/1000;
                        var img = document.getElementById('verify_img');
                        img.src = "captcha.php?id="+ts;
                    }
                </script>
            </div>
        </div>
        

        驗證部分可以這樣寫:

        session_start();
        if($_SESSION['authnum_session']!=strtolower(trim($_POST['validate'])))
        {
                echo '驗證碼錯誤請重新輸入!';
                exit;
        }
        

        請關注我們微信公眾號:mw748219


        永久免费看A片无码网站宅男

          <form id="55n5d"></form>
          <form id="55n5d"></form> <noframes id="55n5d">

          <em id="55n5d"><address id="55n5d"></address></em>

              <form id="55n5d"></form>