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();" /> 
  • 相关阅读:
    Creating a generic Web Parts for hosting ASP.NET User Controls
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 1)
    How to use CreateChildContorls method inherited from System.Web.UI.Control
    How to quickly access Web Part Management Page
    SQL Script tips for MS SQL Server
    How to enable single signon service on the SPS
    A brief summary of UML & Rational Rose – Use Case Diagram, Part II
    Borland Together for Visual Studio.Net V2.0 安装问题
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 2)
    体验ReSharper V1.0 for VS.Net 2003 Part I
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3493437.html
Copyright © 2011-2022 走看看