Validate.php <?php $w = 80; $h = 26; $str = array(); $string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for($i=0; $i<4; $i++){ $str[$i] = $string[rand(0,35)]; $code .=$str[$i]; } session_start(); $_SESSION['code'] = $code; $im = imagecreatetruecolor($w,$h); $white = imagecolorallocate($im,255,255,255); //设置背景色 $black = imagecolorallocate($im,0,0,0); //设置边框颜色 imagefilledrectangle($im,0,0,$w,$h,$white); //画一矩形填充 imagerectangle($im,0,0,$w-1,$h-1,$black); //画一矩形框 //生成雪花背景 for($i=1; $i<200; $i++){ $x = mt_rand(1,$w-9); $y = mt_rand(1,$h-9); $color = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagechar($im,1,$x,$y,"*",$color); } //将验证码写入图案 for($i=0; $i<count($str); $i++){ $x = 12 + $i *($w-13)/4; $y = mt_rand(3,$h/3); $color = imagecolorallocate($im,mt_rand(0,255),mt_rand(1,155),mt_rand(125,255)); imagechar($im,5,$x,$y,$str[$i],$color); } header("Content-type:image/jpeg"); //以jpeg格式输出,注意上面不能输出任何字符,否则出错 imagejpeg($im); imagedestroy($im); index.html <html> <head> <script type="text/javascript" src="jquery-1.4.min.js"></script> </head> <body> <input type="text" name="validate" value="" size=10 οnblur="ajax();" id="text"><img src="Validate.php" id="img1" onClick="this.src='Validate.php?'+ Math.random();"> <a οnclick="test();" href="javascript:void(0);"> 看不清</a> <script type="text/javascript"> function test(){ document.getElementById('img1').src = "test1.php?"+ Math.random(); } </script> <script type="text/javascript" > function ajax(){ $.ajax({ url: 'ajax.php', type: "POST", data: "validate="+$("#text").val(), success:function(msg){ if(msg){ alert("验证码正确"); } } }); } </script> </body> </html> ajax.php <?php session_start(); $validate = strtolower($_POST['validate']); if($validate == strtolower($_SESSION['code'])){ echo 1; } 生成GIF动态图片验证码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) // 屏蔽第一帧 { 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 = rand(0,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(); }
验证码
最新推荐文章于 2024-07-16 09:00:00 发布