巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

php天生静态考证码gif图片

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-27 10:44:59 阅读数: 133

这是一个经由过程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;$i<32;$i++){     ob_start();     $image=imagecreate($board_width,$board_height);     imagecolorallocate($image,0,0,0);     // 设定笔墨色彩数组     $colorList[]=ImageColorAllocate($image,15,73,210);     $colorList[]=ImageColorAllocate($image,0,64,0);     $colorList[]=ImageColorAllocate($image,0,0,64);     $colorList[]=ImageColorAllocate($image,0,128,128);     $colorList[]=ImageColorAllocate($image,27,52,47);     $colorList[]=ImageColorAllocate($image,51,0,102);     $colorList[]=ImageColorAllocate($image,0,0,145);     $colorList[]=ImageColorAllocate($image,0,0,113);     $colorList[]=ImageColorAllocate($image,0,51,51);     $colorList[]=ImageColorAllocate($image,158,180,35);     $colorList[]=ImageColorAllocate($image,59,59,59);     $colorList[]=ImageColorAllocate($image,0,0,0);     $colorList[]=ImageColorAllocate($image,1,128,180);     $colorList[]=ImageColorAllocate($image,0,153,51);     $colorList[]=ImageColorAllocate($image,60,131,1);     $colorList[]=ImageColorAllocate($image,0,0,0);     $fontcolor=ImageColorAllocate($image,0,0,0);     $gray=ImageColorAllocate($image,245,245,245);     $color=imagecolorallocate($image,255,255,255);     $color2=imagecolorallocate($image,255,0,0);     imagefill($image,0,0,$gray);     $space=15;// 字符间距     if($i>0){// 屏障第一帧       $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;$k<3;$k++){       $colorRandom=mt_rand(0,sizeof($colorList)-1);       $todrawline=1;       if($todrawline){         imageline($image,mt_rand(0,$board_width),mt_rand(0,$board_height),mt_rand(0,$board_width),mt_rand(0,$board_height),$colorList[$colorRandom]);       }else{         $w=mt_rand(0,$board_width);         $h=mt_rand(0,$board_width);         imagearc($image,$board_width-floor($w / 2),floor($h / 2),$w,$h, rand(90,180),rand(180,270),$colorList[$colorRandom]);       }     }     imagegif($image);     imagedestroy($image);     $imagedata[]=ob_get_contents();     ob_clean();     ++$i;   }   $gif=new GIFEncoder($imagedata);   Header("Content-type:image/gif");   echo $gif->GetAnimation(); }   /** *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.="!37713NETSCAPE2.031".GIFEncoder::GIFWord($this->LOP)."";     }    }    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="!xF9x04".chr(($this->DIS<<2)+0).chr(($d>>0)&0xFF).chr(($d>>8)&0xFF)."x0x0";     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="!xF9x04".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开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

02
05月
如何样的关头词停止推行?百度推行竞价账户关头

对良多刚打仗百度推行的客户来讲,挑选适合的关头词来为本身的企业停止宣扬推行是特别首要。一些客户在刚打仗时,对百度推行关头词挑选的不正视、... >>概况

27
04月
PHP递归完成层级树状睁开

本文实例为大师分享了PHP递归完成层级树状睁开的首要代码,供大师参考,详细内容以下结果图:完成代码:<?php $db =... >>概况

29
04月
php获得中文拼音首字母类和函数分享

一、公司共事清算的类,挺适用的.信任拿出来分享下他不会介怀的O(∩_∩)O.不过若是首字母是数字或英文会有些题目.复制代码 代码以下:/**... >>概况

24
04月
开端熟悉css自界说属性

明天,CSS预处置器是Web开辟的规范。 预处置器的一个首要长处是它们使您能够或许操纵变量, 这有助于您避免复制和粘贴代码,并简化了开辟和重构。... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站