温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在php中利用GD库实现一个验证码功能

发布时间:2020-12-18 15:56:13 来源:亿速云 阅读:180 作者:Leah 栏目:开发技术

本篇文章为大家展示了如何在php中利用GD库实现一个验证码功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<?php  require_once 'string.func.php'; //通过GD库做验证码 /**  *添加验证文字  * @param int $type  * @param int $length */ function buildRandomString($type=1,$length=4){   $row='';   if($type==1){     $row=join('',range(0, 9));   }else if($type==2){     $row=join('', array_merge(range('a','z'),range('A', 'Z')));   }else if($type==3){     $row=join('', array_merge(range('a','z'),range('A', 'Z'),range(0, 9)));   };   $row=str_shuffle($row);      $row=substr($row,0,$length);   return $row; } /**  * 生成缩略图  * @param int $type //包含数字或者英文  * @param int $length 多少个字符  * @param int $pixel 干扰小点的密度  * @param int $dst_h 干扰线的密度  * @param string //验证码在$_SESSION中的名字  */ function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){   //session_start();   //创建画布   $width = 100;   $height = 40;   $image = imagecreatetruecolor ( $width, $height );   $white = imagecolorallocate ( $image, 255, 255, 255 );   $black = imagecolorallocate ( $image, 0, 0, 0 );   //用填充矩形填充画布   imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );   $chars = buildRandomString ( $type, $length );   $_SESSION [$sess_name] = $chars;   //$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );   $fontfiles = array ("SIMKAI.TTF" );   //由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体   for($i = 0; $i < $length; $i ++) {     $size = mt_rand ( 14, 18 );     $angle = mt_rand ( - 15, 15 );     $x = 5 + $i * $size;     $y = mt_rand ( 20, 26 );     $fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];     $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );     $text = substr ( $chars, $i, 1 );     imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );   }   if ($pixel) {     for($i = 0; $i < 50; $i ++) {       imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );     }   }   if ($line) {     for($i = 1; $i < $line; $i ++) {       $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );       imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );     }   }   header ( "content-type:image/gif" );   imagegif ( $image );   imagedestroy ( $image ); }

主要要点:

1、如果前面没有申明session_start();则需要申明;
2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹;
3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。

上述内容就是如何在php中利用GD库实现一个验证码功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI