• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > wordpress主题使用教程 > php实现wordpress登录之彩色验证码

    php实现wordpress登录之彩色验证码

    作者: 分类:wordpress主题使用教程 点击: 3,666 次
    wordpress CMS主题:ssmay主题

      在上一章节中,我们介绍了如何通过php实现wordpress登录图片验证码?,可以让用户登录时,先要通过验证码,然后再验证帐号和密码,这样有效提高了登录之安全性。但是,有些美中不足,验证码字体太小、字体样式太呆板、字体颜色单一。本章,我们就来通过php代码来创建一个彩色、多姿、多样的验证码(如下图)。下面,一起来看看吧。

      php实现wordpress登录之彩色验证码

      php实现wordpress登录之彩色验证码

      php实现wordpress登录之彩色验证码

      下面就是这个验证码的详细代码,这里提供的是一个验证码函数,你只需要调用一下就可以 了:

      /* 验证码函数
      函数参数:
      1 $num 验证码个数,
      2 $type 字符类型,0为数字,1为数字+小写字母,2为数字+大小写字母
      3 $height 图片高
      4 $size 字体大小
      5 $radian1 字体随机弧度起始位
      6 $radian2 字体随机弧度结束位
      7 $y 验证码垂直位置
      */
      function image_check_code($num=4,$type=0,$height=30,$size=16,$radian1=-40,$radian2=40,$y=20){

      //1、随机验证码 //$num 是多少个; $type 是类型,0为数字,1为数字+小写字母,2为数字+大小写字母
      $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //定义验证码可选范
      $arr=array(9,35,strlen($str)-1);
      $string="";
      for($i=0; $i<$num;$i++){
      $string.=$str[rand(0,$arr[$type])];
      }

      //2、创建画布,即图片源,以及背景颜色和字体颜色
      $width=$num*($size+2);
      $im=imagecreatetruecolor($width,$height);

      $bg=imagecolorallocate($im,200,200,200);
      $color[]=imagecolorallocate($im,128,35,4);
      $color[]=imagecolorallocate($im,45,128,4);
      $color[]=imagecolorallocate($im,131,131,250);
      $color[]=imagecolorallocate($im,166,9,174);
      $color[]=imagecolorallocate($im,173,163,37);
      $color[]=imagecolorallocate($im,30,115,121);
      $color[]=imagecolorallocate($im,0,128,128);
      $color[]=imagecolorallocate($im,128,128,0);

      imagefill($im,0,0,$bg); //设置背景色

      //3、创建干扰线
      for($i=1; $i<200; $i++){ //添加 点
      $line_color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); //随机色
      imagesetpixel($im,rand(0,$width),rand(0,$height),$line_color);
      }
      for($i=1; $i<10; $i++){ //添加 弧线
      $line_color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); //随机色
      imagearc($im,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),rand(0,100),rand(0,360),$line_color);
      }
      //4、转换验证码 到图片
      for($i=0; $i<$num; $i++){
      //imagettftext 参数1是图片源,2是字体大小,3是弧形度,4是水平位置,5是垂直位置,6是字颜色,7是字体,8是验证码字符串
      imagettftext($im,$size,rand($radian1,$radian2),6+($i*$size),$y-10,$color[rand(0,7)],"msyhbd.ttf",$string[$i]);
      }
      //5、输出图片
      header("content-type:image/png");
      imagepng($im);
      //释放资源内存
      imagedestroy($im);
      }

      我们只需要在需要验证码的地方调用它就可以了。如:

      image_check_code(4,2,60,36,-40,40,60);

      这个函数有7个代码,参数1 是验证码个数;参数2 是字符类型,0为数字,1为数字+小写字母,2为数字+大小写字母;参数3 是 图片高;参数4是字体大小;参数5是字体随机弧度起始位;参数6 是字体随机弧度结束位;参数7 是验证码垂直位置。我们可以根据自己的需要来修改这几个参数,就可以显示出不同的效果来。



      QQ二维码

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201511214885.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    一条回应:“php实现wordpress登录之彩色验证码”

    1. 吃肉念佛说道:

      我把代码复制过去了 没有图片怎么回事?

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.