zoukankan      html  css  js  c++  java
  • 一个好用的PHP验证码类

    分享一个好用的php验证码类,包括调用示例。
    说明:
    如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

    参考了网上的php 生成验证码的方法,以及php 图片验证码php 中文验证码的生成方法。用到了PHP GD库的相关知识。

    1,生成验证码的类 VerificationCode.class.php
    <?php  
        class VerificationCode{  
            private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //随机因子  
            private $code;  //验证码  
            private $codelen=4; //验证码长度  
            private $width=110; //宽度  
            private $height=30; //高度  
            private $img;   //图像资源句柄  
            private $font;  //制定字体  
            private $fontSize=25;   //字体大小  
            private $fontColor//字体颜色  
            public function __construct(){  
                $this->font="CALIBRIZ.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),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  // www.jbxue.com
                    //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);  
                }  
            }  
            //生成线条、雪花  
            private function createDisturb(){  
                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->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$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 showCode(){  
                $this->createBg();  
                $this->createCode();  
                $this->createDisturb();  
                $this->createFont();  
                $this->outPut();  
            }  
            //获取验证码  
            public function getCode(){  
                return strtolower($this->code);  
            }  
        }  
    ?>  
    code.php
    <?php  
        session_start();  
        require_once 'VerificationCode.class.php';  
        $code=new VerificationCode();  
        $_SESSION['code']=$code->getCode();  
        $code->showCode();  
    ?>  

    验证码:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" /> 
  • 相关阅读:
    Android之SurfaceView学习(一)
    AS3的加载机制(带例子) 转载
    Timer与TimerTask的用法
    A*寻路初探 GameDev.net (转载)
    解决在Sql Server2005查询分析器中读取Excel表出现的一些问题
    svn更改用户问题
    MVC4 WEBAPI初探
    使用WORD2013发布blog
    一个IIS中可否支持两个版本的Freamwork
    web打印也能分页
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3493437.html
Copyright © 2011-2022 走看看