wordpress CMS主题 微信
Home > wordpress主题使用教程 > php实现wordpress登录之彩色验证码

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

高时银博客 wordpress主题使用教程 点击: 1,588 次 0 0
  • 标签:
  • 在上一章节中,我们介绍了如何通过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 是验证码垂直位置。我们可以根据自己的需要来修改这几个参数,就可以显示出不同的效果来。


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

    目前还没有评论。赶快来坐沙发吧。

    发表评论