温馨提示×

温馨提示×

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

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

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

发布时间:2020-12-18 15:56:13 阅读:141 作者:Leah 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章为大家展示了如何在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(09));
  }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(09)));
  };
  $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 $image255255255 );
  $black imagecolorallocate $image000 );
  //用填充矩形填充画布
  imagefilledrectangle $image11$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 1418 );
    $angle mt_rand ( - 1515 );
    $x 5 + $i $size;
    $y mt_rand 2026 );
    $fontfile "../fonts/" . $fontfiles [mt_rand 0count $fontfiles ) - 1 )];
    $color imagecolorallocate $imagemt_rand 5090 ), mt_rand 80200 ), mt_rand 90180 ) );
    $text substr $chars$i1 );
    imagettftext $image$size$angle$x$y$color$fontfile$text );
  }
  if ($pixel) {
    for($i 0$i 50$i ++) {
      imagesetpixel $imagemt_rand 0$width 1 ), mt_rand 0$height 1 ), $black );
    }
  }
  if ($line) {
    for($i 1$i $line$i ++) {
      $color imagecolorallocate $imagemt_rand 5090 ), mt_rand 80200 ), mt_rand 90180 ) );
      imageline $imagemt_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库实现一个验证码功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

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

AI

开发者交流群×