我们先来检查一下自己的php是不是打开了gd库。 <div class="codetitle"><a style="CURSOR: pointer" data="56907" class="copybut" id="copybut56907" onclick="doCopy('code56907')"> 代码如下:<div class="codebody" id="code56907"> <?php if(extension_loaded('gd')) { echo '你可以使用gd '; foreach(gd_info() as $cate=>$value) echo "$cate: $value "; }else echo '你没有安装gd扩展'; ?>
如果有返回信息就正确可以常用使用了 例1 <div class="codetitle"><a style="CURSOR: pointer" data="48621" class="copybut" id="copybut48621" onclick="doCopy('code48621')"> 代码如下:<div class="codebody" id="code48621"> <?php /* vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y 自己改写记录session $code / session_start(); vCode(4,15); //4个数字,显示大小为15 function vCode($num = 4,$size = 20,$width = 0,$height = 0) { !$width && $width = $num $size 4 / 5 + 5; !$height && $height = $size + 10; // 去掉了 0 1 O l 等 $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW"; $code = ''; for ($i = 0; $i < $num; $i++) { $code .= $str[mt_rand(0,strlen($str)-1)]; } // 画图像 $im = imagecreatetruecolor($width,$height); // 定义要用到的颜色 $back_color = imagecolorallocate($im,235,236,237); $boer_color = imagecolorallocate($im,118,151,199); $text_color = imagecolorallocate($im,mt_rand(0,200),120),120)); // 画背景 imagefilledrectangle($im,$width,$height,$back_color); // 画边框 imagerectangle($im,$width-1,$height-1,$boer_color); // 画干扰线 for($i = 0;$i < 5;$i++) { $font_color = imagecolorallocate($im,255),255)); imagearc($im,mt_rand(- $width,$width),mt_rand(- $height,$height),mt_rand(30,$width 2),mt_rand(20,$height 2),360),$font_color); } // 画干扰点 for($i = 0;$i < 50;$i++) { $font_color = imagecolorallocate($im,255)); imagesetpixel($im,$font_color); } // 画验证码 @imagefttext($im,$size,5,$size + 3,$text_color,'c:WINDOWSFontssimsun.ttc',$code); $_SESSION["VerifyCode"]=$code; header("Cache-Control: max-age=1,s-maxage=1,no-cache,must-revalidate"); header("Content-type: image/png;charset=gb2312"); imagepng($im); imagedestroy($im); } ?>
例2 使用PHP,结合session和GD库扩展开发的一个生成验证码的例子(w3c推荐),可以很方便的用于项目中。而且样式美观 <div class="codetitle"><a style="CURSOR: pointer" data="26595" class="copybut" id="copybut26595" onclick="doCopy('code26595')"> 代码如下:<div class="codebody" id="code26595"> //首先开启session session_start(); //定义前台显示验证码长&宽 $image_width = 120; $image_height = 40; $characters_on_image = 6; $font = './monofont.ttf'; //The characters that can be used in the CAPTCHA code. //avoid confusing characters (l 1 and i for example) $possible_letters = '23456789bcdfghjkmnpqrstvwxyz'; $random_dots = 10; $random_lines = 30; $captcha_text_color="0x142864"; $captcha_noice_color = "0x142864"; //定义要生成验证码的字符串 $code = ''; $i = 0; while ($i < $characters_on_image) { $code .= substr($possible_letters,strlen($possible_letters)-1),1); $i++; } $font_size = $image_height 0.75; $image = @imagecreate($image_width,$image_height); / setting the background,text and noise colours here / $background_color = imagecolorallocate($image,255,255); $arr_text_color = hexrgb($captcha_text_color); $text_color = imagecolorallocate($image,$arr_text_color['red'], $arr_text_color['green'],$arr_text_color['blue']); $arr_noice_color = hexrgb($captcha_noice_color); $image_noise_color = imagecolorallocate($image,$arr_noice_color['red'], $arr_noice_color['green'],$arr_noice_color['blue']); / generating the dots randomly in background / for( $i=0; $i<$random_dots; $i++ ) { imagefilledellipse($image,$image_width), mt_rand(0,$image_height),2,3,$image_noise_color); } / generating lines randomly in background of image / for( $i=0; $i<$random_lines; $i++ ) { imageline($image,$image_noise_color); } / create a text box and add 6 letters code in it / $textbox = imagettfbbox($font_size,$font,$code); $x = ($image_width - $textbox[4])/2; $y = ($image_height - $textbox[5])/2; imagettftext($image,$font_size,$x,$y,$code); / Show captcha image in the page html page */ header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow imagejpeg($image);//showing the image imagedestroy($image);//destroying the image instance //设置session,做验证 $_SESSION['6_letters_code'] = $code; function hexrgb ($hexstr) { $int = hexdec($hexstr); return array("red" => 0xFF & ($int >> 0x10), "green" => 0xFF & ($int >> 0x8), "blue" => 0xFF & $int); }
个人推荐推荐第二个生成验证码程序代码,各位同学可尝试参考对比哦,最后一个是W3C标准生成的也是利用了php gd库。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|