zoukankan      html  css  js  c++  java
  • 一个漂亮的PHP验证码

    自己导入字体,可以按照自己的额需要随便修改。

    <?php
        class Imagecode{
            private $width ;
            private $height;
            private $counts;
            private $distrubcode;
            private $fonturl;
            private $session;
            function __construct($width = 120,$height = 30,$counts = 5,$distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm",$fonturl="C:WindowsFontsTektonPro-BoldCond.otf"){
                $this->width=$width;
                $this->height=$height;
                $this->counts=$counts;
                $this->distrubcode=$distrubcode;
                $this->fonturl=$fonturl;
                $this->session=$this->sessioncode();
                session_start();
                $_SESSION['code']=$this->session;
            }
            
             function imageout(){
                $im=$this->createimagesource();
                $this->setbackgroundcolor($im);
                $this->set_code($im);
                $this->setdistrubecode($im);
                ImageGIF($im);
                ImageDestroy($im); 
            }
            
            private function createimagesource(){
                return imagecreate($this->width,$this->height);
            }
            private function setbackgroundcolor($im){
                $bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255));//±³¾°ÑÕÉ«
                imagefill($im,0,0,$bgcolor);
            }
            private function setdistrubecode($im){
                $count_h=$this->height;
                $cou=floor($count_h*2);
                for($i=0;$i<$cou;$i++){
                    $x=rand(0,$this->width);
                    $y=rand(0,$this->height);
                    $jiaodu=rand(0,360);
                    $fontsize=rand(8,15);
                    $fonturl=$this->fonturl;
                    $originalcode = $this->distrubcode;
                    $countdistrub = strlen($originalcode);
                    $dscode = $originalcode[rand(0,$countdistrub-1)];
                    $color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140));
                    imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode);
                    
                }
            }
            private function set_code($im){
                    $width=$this->width;
                    $counts=$this->counts;
                    $height=$this->height;
                    $scode=$this->session;
                    $y=floor($height/2)+floor($height/4);
                    $fontsize=rand(30,35);
                    $fonturl="C:WindowsFontsAdobeGothicStd-Bold.otf";//$this->fonturl;
                    
                    $counts=$this->counts;
                    for($i=0;$i<$counts;$i++){
                        $char=$scode[$i];
                        $x=floor($width/$counts)*$i+8;
                        $jiaodu=rand(-20,30);
                        $color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));
                        imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);
                    }
                    
                
                
            }
            private function sessioncode(){
                    $originalcode = $this->distrubcode;
                    $countdistrub = strlen($originalcode);
                    $_dscode = "";
                    $counts=$this->counts;
                    for($j=0;$j<$counts;$j++){
                        $dscode = $originalcode[rand(0,$countdistrub-1)];
                        $_dscode.=$dscode;
                    }
                    return $_dscode;
                    
            }
        }
        Header("Content-type: image/GIF");
        $imagecode=new  Imagecode(160,50);
        $imagecode->imageout();
  • 相关阅读:
    品鉴-宋词
    【转载】全球水质最棒的十大景点
    Python文档管理与格式化工具
    Python音频处理
    Python剪切板提取、截图、图片粘贴,操作汇总
    Python多进程
    Wifi配置
    条码生成与解析
    谎言: “太空能看到的惟一的人工痕迹,长城!”
    VNC-Server安装配置详解
  • 原文地址:https://www.cnblogs.com/superfeeling/p/4675678.html
Copyright © 2011-2022 走看看