探讨如何在php168_cms中提取验证码
代码如下: function yzImg($nmsg){ if (function_exists('imagecreatetruecolor')){ $imstr[0]["s"]=$nmsg[0]; $imstr[1]["s"]=$nmsg[1]; $imstr[2]["s"]=$nmsg[2]; $imstr[3]["s"]=$nmsg[3]; //文件头... header("Content-type: image/png"); //创建真彩色白纸 $im = @imagecreatetruecolor(50,20) or die("建立图像失败"); //获取背景颜色 $background_color = imagecolorallocate($im,255,255); //填充背景颜色(这个东西类似油桶) imagefill($im,$background_color); //获取边框颜色 $border_color = imagecolorallocate($im,200,200); //画矩形,边框颜色200,200 imagerectangle($im,49,19,$border_color); //逐行炫耀背景,全屏用1或0 for($i=2;$i<28;$i++){ //获取随机淡色 $line_color = imagecolorallocate($im,rand(180,255),255)); //画线 imageline($im,2,$i,47,$line_color); } //设置字体大小 $font_size=12; //设置印上去的文字 $Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $Str[1] = "abcdefghijklmnopqrstuvwxyz"; $Str[2] = "01234567891234567890123456"; //获取第1个随机文字 //$imstr[0]["s"] = $Str[rand(0,2)][rand(0,25)]; $imstr[0]["x"] = rand(2,5); $imstr[0]["y"] = rand(1,4); //获取第2个随机文字 //$imstr[1]["s"] = $Str[rand(0,25)]; $imstr[1]["x"] = $imstr[0]["x"]+$font_size-1+rand(0,1); $imstr[1]["y"] = rand(1,3); //获取第3个随机文字 //$imstr[2]["s"] = $Str[rand(0,25)]; $imstr[2]["x"] = $imstr[1]["x"]+$font_size-1+rand(0,1); $imstr[2]["y"] = rand(1,4); //获取第4个随机文字 //$imstr[3]["s"] = $Str[rand(0,25)]; $imstr[3]["x"] = $imstr[2]["x"]+$font_size-1+rand(0,1); $imstr[3]["y"] = rand(1,3); //写入随机字串 for($i=0;$i<4;$i++){ //获取随机较深颜色 $text_color = imagecolorallocate($im,rand(80,180),180)); //画文字 imagechar($im,$font_size,$imstr[$i]["x"],$imstr[$i]["y"],$imstr[$i]["s"],$text_color); } //显示图片 imagepng($im); //销毁图片 imagedestroy($im); exit; } else { header("Pragma:no-cache"); header("Cache-control:no-cache"); header("ContentType: Image/BMP"); $Color[0] = chr(0).chr(0).chr(0); echo chr(66).chr(77).chr(230).chr(4).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(54).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(10).chr(0).chr(0).chr(0).chr(1).chr(0); for ($i=9;$i>=0;$i--){ } $string_yzimg=yzImgNumRand(4);
function yzImgNumRand($lenth){ 这个生成的验证码只是单纯的数字,背景填充很简单了只是26根直线填充的。前边看到他是想要4为随机字母加数字的序列,可是后来生成序列的时候却仅仅用了数字,字母却并没有用。下面重新修改为4位字母加数字的序列: 代码如下: function yzImgNumRand($lenth){ mt_srand((double)microtime() * 1000000); $Str[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $Str[1] = "abcdefghijklmnopqrstuvwxyz"; $Str[2] = "01234567891234567890123456"; for($i=0;$i<$lenth;$i++){ $randval.= $Str[rand(0,25)]; } return $randval; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |