日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

phpgif图片包_php生成动态验证码gif图片

發布時間:2024/9/27 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 phpgif图片包_php生成动态验证码gif图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是一個通過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

$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

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<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

GIFEncoder::GIFAddFrames($i,$GIF_dly[$i]);

}

GIFEncoder::GIFAddFooter();

}

function GIFAddHeader(){

$cmap=0;

if(ord($this->BUF[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".GIFEncoder::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<<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;$jBUF[$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

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如何生成動態驗證碼的實現方法,希望對大家的學習有所幫助。

總結

以上是生活随笔為你收集整理的phpgif图片包_php生成动态验证码gif图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕视频 | 日本成人片网站 | 成人高清视频免费观看 | www.狠狠操| 午夜影院色| 日韩视频在线观看二区 | 五月深爱 | 日韩精品成人免费观看视频 | 久久久精品电影 | 午夜成人免费电影 | 午夜吃瓜 | 一级少妇精品久久久久久久 | 国产九色在线播放九色 | 国产精品国产三级国产播12软件 | 视频一区二区欧美 | 亚洲一级网站 | 99精品久久久久久久婷婷 | 污污网站在线观看视频 | 深夜天堂 | 中文字幕在线播放 | 天堂…中文在线最新版在线 | 欧洲成人av| 91久色视频 | 在线观看日韩中文字幕 | 九热视频在线观看 | mm131在线| 木木影院 | 国产成人网 | 亚洲国产一区二区a毛片 | 久久中文字幕一区二区 | 色噜噜狠狠一区二区 | 粉嫩aⅴ一区二区三区 | 国产91精品一区 | 国内精品免费 | 小罗莉极品一线天在线 | 熟女人妻一区二区三区免费看 | 久久久亚洲成人 | 国产精品久免费的黄网站 | 白丝美女喷水 | 精品国产无码在线观看 | 内射干少妇亚洲69xxx | 亚洲国产精品毛片av不卡在线 | 欧美视频在线不卡 | 一区二区三区视频在线观看免费 | 国产香蕉在线视频 | 欧美亚洲国产成人 | 色xxxxx| 中文字幕一区二区三区乱码不卡 | 啪啪精品 | 永久av免费在线观看 | 在线观看wwww | 中文字幕在线导航 | 天堂在线视频免费观看 | 91久久国产综合久久91 | 91视频久久 | 波多野结衣av在线播放 | 国产精品婷婷 | 全黄性性激高免费视频 | 无人在线观看高清视频 单曲 | yellow免费在线观看 | 免费日批网站 | 青春草在线视频免费观看 | 午夜黄色福利 | 奇米超碰在线 | 久久久久久视 | 国产亚洲精品久久久久久无几年桃 | 国产日韩精品一区二区三区在线 | 欧美少妇毛茸茸 | 在线观看黄网 | 狠狠狠狠狠 | 日本一本高清 | 欧美一级精品 | 美女在线观看www | 懂色av一区二区夜夜嗨 | av网站在线免费观看 | 老司机免费视频 | 久久短视频 | 最新极品jizzhd欧美 | 熟女人妻一区二区三区免费看 | 亚洲色鬼 | 国产精品乱轮 | 国产绿帽刺激高潮对白 | 天天爽夜夜操 | 亚洲国产小视频 | 97超碰超碰| 日本www色 | 国产精品人人做人人爽 | 在线免费观看成人 | 无码少妇一级AV片在线观看 | 日韩精品一区在线 | 国产高清欧美 | 日韩一级片免费 | 夫妻黄色片 | 免费一级a毛片夜夜看 | 欧美在线观看不卡 | 91日本视频 | 中文字幕视频一区二区 | 国产精品二区三区 | 精品日韩一区 |