侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php生成动态验证码gif图片

php  /  管理员 发布于 7年前   246

这是一个通过php生成的动态验证码图片的示例,重点是可以运行哦!下面先发下效果图:

下面是php生成动态验证码需要用到的相关类和函数。

0){// 屏蔽第一帧       $top=0;       for($k=0;$kGetAnimation(); }   /** *GIFEncoder类 **/ Class GIFEncoder{   var $GIF="GIF89a";       /* GIF header 6 bytes    */    var $VER="GIFEncoder V2.06";   /* Encoder version      */    var $BUF=Array();   var $LOP=0;   var $DIS=2;   var $COL=-1;   var $IMG=-1;   var $ERR=Array(     'ERR00'=>"Does not supported function for only one image!",     'ERR01'=>"Source is not a GIF image!",     'ERR02'=>"Unintelligible flag ",     'ERR03'=>"Could not make animation from animated GIF source",   );   function GIFEncoder($GIF_src,$GIF_dly=100,$GIF_lop=0,$GIF_dis=0, $GIF_red=0,$GIF_grn=0,$GIF_blu=0,$GIF_mod='bin'){     if(!is_array($GIF_src)&&!is_array($GIF_tim)){       printf("%s: %s",$this->VER,$this->ERR['ERR00']);       exit(0);     }      $this->LOP=($GIF_lop>-1)?$GIF_lop:0;     $this->DIS=($GIF_dis>-1)?(($GIF_dis<3)?$GIF_dis:3):2;     $this->COL=($GIF_red>-1&&$GIF_grn>-1&&$GIF_blu>-1)?($GIF_red |($GIF_grn<<8)|($GIF_blu<<16)):-1;      for($i=0,$src_count=count($GIF_src);$i<$src_count;$i++){       if(strToLower($GIF_mod)=="url"){         $this->BUF[]=fread(fopen($GIF_src [$i],"rb"),filesize($GIF_src [$i]));       }elseif(strToLower($GIF_mod)=="bin"){         $this->BUF [ ]=$GIF_src [ $i ];       }else{         printf("%s: %s(%s)!",$this->VER,$this->ERR [ 'ERR02' ],$GIF_mod);         exit(0);       }        if(substr($this->BUF[$i],0,6)!="GIF87a"&&substr($this->BUF [$i],0,6)!="GIF89a"){         printf("%s: %d %s",$this->VER,$i,$this->ERR ['ERR01']);         exit(0);       }        for($j=(13+3*(2<<(ord($this->BUF[$i]{10})&0x07))),$k=TRUE;$k;$j++){         switch($this->BUF [$i]{$j}){           case "!":  if((substr($this->BUF[$i],($j+3),8))=="NETSCAPE"){     printf("%s: %s(%s source)!",$this->VER,$this->ERR ['ERR03'],($i+1));     exit(0); }  break;           case ";":  $k=FALSE;           break;         }        }      }      GIFEncoder::GIFAddHeader();     for($i=0,$count_buf=count($this->BUF);$i<$count_buf;$i++){       GIFEncoder::GIFAddFrames($i,$GIF_dly[$i]);     }      GIFEncoder::GIFAddFooter();   }    function GIFAddHeader(){     $cmap=0;     if(ord($this->BUF[0]{10})&0x80){       $cmap=3*(2<<(ord($this->BUF [0]{10})&0x07));       $this->GIF.=substr($this->BUF [0],6,7);       $this->GIF.=substr($this->BUF [0],13,$cmap);       $this->GIF.="!\377\13NETSCAPE2.0\3\1".GIFEncoder::GIFWord($this->LOP)."\0";     }    }    function GIFAddFrames($i,$d){     $Locals_str=13+3*(2 <<(ord($this->BUF[$i]{10})&0x07));     $Locals_end=strlen($this->BUF[$i])-$Locals_str-1;     $Locals_tmp=substr($this->BUF[$i],$Locals_str,$Locals_end);     $Global_len=2<<(ord($this->BUF [0]{10})&0x07);     $Locals_len=2<<(ord($this->BUF[$i]{10})&0x07);     $Global_rgb=substr($this->BUF[0],13,3*(2<<(ord($this->BUF[0]{10})&0x07)));     $Locals_rgb=substr($this->BUF[$i],13,3*(2<<(ord($this->BUF[$i]{10})&0x07)));     $Locals_ext="!\xF9\x04".chr(($this->DIS<<2)+0).chr(($d>>0)&0xFF).chr(($d>>8)&0xFF)."\x0\x0";     if($this->COL>-1&&ord($this->BUF[$i]{10})&0x80){       for($j=0;$j<(2<<(ord($this->BUF[$i]{10})&0x07));$j++){         if(ord($Locals_rgb{3*$j+0})==($this->COL>> 0)&0xFF&&ord($Locals_rgb{3*$j+1})==($this->COL>> 8)&0xFF&&ord($Locals_rgb{3*$j+2})==($this->COL>>16)&0xFF){           $Locals_ext="!\xF9\x04".chr(($this->DIS<<2)+1).chr(($d>>0)&0xFF).chr(($d>>8)&0xFF).chr($j)."\x0";           break;         }        }      }      switch($Locals_tmp{0}){       case "!":          $Locals_img=substr($Locals_tmp,8,10);         $Locals_tmp=substr($Locals_tmp,18,strlen($Locals_tmp)-18);         break;       case ",":          $Locals_img=substr($Locals_tmp,0,10);         $Locals_tmp=substr($Locals_tmp,10,strlen($Locals_tmp)-10);         break;     }      if(ord($this->BUF[$i]{10})&0x80&&$this->IMG>-1){       if($Global_len==$Locals_len){         if(GIFEncoder::GIFBlockCompare($Global_rgb,$Locals_rgb,$Global_len)){           $this->GIF.=($Locals_ext.$Locals_img.$Locals_tmp);         }else{           $byte=ord($Locals_img{9});           $byte|=0x80;           $byte&=0xF8;           $byte|=(ord($this->BUF [0]{10})&0x07);           $Locals_img{9}=chr($byte);           $this->GIF.=($Locals_ext.$Locals_img.$Locals_rgb.$Locals_tmp);         }        }else{         $byte=ord($Locals_img{9});         $byte|=0x80;         $byte&=0xF8;         $byte|=(ord($this->BUF[$i]{10})&0x07);         $Locals_img {9}=chr($byte);         $this->GIF.=($Locals_ext.$Locals_img.$Locals_rgb.$Locals_tmp);       }      }else{       $this->GIF.=($Locals_ext.$Locals_img.$Locals_tmp);     }      $this->IMG=1;   }    function GIFAddFooter(){     $this->GIF.=";";   }    function GIFBlockCompare($GlobalBlock,$LocalBlock,$Len){     for($i=0;$i<$Len;$i++){       if($GlobalBlock{3*$i+0}!=$LocalBlock{3*$i+0}||$GlobalBlock{3*$i+1}!=$LocalBlock{3*$i+1}||$GlobalBlock{3*$i+2}!=$LocalBlock{3*$i+2}){         return(0);       }      }      return(1);   }    function GIFWord($int){     return(chr($int&0xFF).chr(($int>>8)&0xFF));   }    function GetAnimation(){     return($this->GIF);   }  } 

php生成动态验证码用法示例:

/*调用示例*/ session_start(); $checkCode=''; $chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ23456789'; for($i=0;$i<4;$i++){   $checkCode.=substr($chars,mt_rand(0,strlen($chars)-1),1); } $_SESSION['code']=strtoupper($checkCode);// 记录session ImageCode($checkCode,60);// 显示GIF动画 

以上就是php如何生成动态验证码的实现方法,希望对大家的学习有所帮助。

您可能感兴趣的文章:

  • PHP生成图片验证码、点击切换实例
  • php生成图片验证码-附五种验证码
  • PHP使用GIFEncoder类生成的GIF动态图片验证码
  • php生成数字字母的验证码图片
  • php生成图片验证码
  • PHP 绘制网站登录首页图片验证码
  • php生成图片验证码的方法
  • php生成图片验证码的实例讲解
  • PHP实现GIF图片验证码
  • PHP生成图片验证码功能示例


  • 上一条:
    PHP+jQuery翻板抽奖功能实现
    下一条:
    php批量删除超链接的实现方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客