• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php生成动态验证码gif图片_PHP

php 搞代码 3年前 (2022-01-25) 22次浏览 已收录 0个评论

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

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

<?php /** *ImageCode 生成包含验证码的GIF图片的函数 *@param $string 字符串 *@param $width 宽度 *@param $height 高度 **/ function ImageCode($string='',$width=75,$height=25){   $authstr=$string?$string:((time()%2==0)?mt_rand(1000,9999):mt_rand(10000,99999));   $board_width=$width;   $board_height=$height;   // 生成一个32帧的GIF动画   for($i=0;$i0){// 屏蔽第一帧       $top=0;       for($k=0;$k<strlen($authstr);$k++){         $colorRandom=mt_rand(0,sizeof($colorList)-1);         $float_top=rand(0,4);         $float_left=rand(0,3);         imagestring($image,6,$space*$k,$top+$float_top,substr($authstr,$k,1),$colorList[$colorRandom]);       }     }     for($k=0;$k<20;$k++){       $colorRandom=mt_rand(0,sizeof($colorList)-1);       imagesetpixel($image,rand()%70,rand()%15,$colorList[$colorRandom]);        }     // 添加干扰线     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_disCOL=($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);$iBUF[]=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<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);$iBUF[0]{10})&0x80){       $cmap=3*(2<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".GIFEn<p>+本文来源gao!%daima.com搞$代*!码9网(</p><strong>搞gaodaima代码</strong>coder::GIFWord($this->LOP)."\0";     }    }    function GIFAddFrames($i,$d){     $Locals_str=13+3*(2 <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<BUF [0]{10})&0x07);     $Locals_len=2<BUF[$i]{10})&0x07);     $Global_rgb=substr($this->BUF[0],13,3*(2<BUF[0]{10})&0x07)));     $Locals_rgb=substr($this->BUF[$i],13,3*(2<BUF[$i]{10})&0x07)));     $Locals_ext="!\xF9\x04".chr(($this->DIS<>0)&0xFF).chr(($d>>8)&0xFF)."\x0\x0";     if($this->COL>-1&&ord($this->BUF[$i]{10})&0x80){       for($j=0;$j<(2<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<>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>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如何生成动态验证码的实现方法,希望对大家的学习有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php生成动态验证码gif图片_PHP
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址