温馨提示×

温馨提示×

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

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

php如何封装验证码工具类

发布时间:2021-08-31 14:59:36 来源:亿速云 阅读:558 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关php如何封装验证码工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体如下:

<?php //验证码工具类 class Captcha{     //属性     private $width;     private $height;     private $fontsize;     private $pixes;     private $lines;     private $str_len;     /*      * 构造方法      * @param1 array $arr = array(),初始化属性的关联数组     */     public function __construct($arr = array()){       //初始化       $this->width = isset($arr['width']) ? $arr['width'] : $GLOBALS['config']['captcha']['width'];       $this->height = isset($arr['height']) ? $arr['height'] : $GLOBALS['config']['captcha']['height'];       $this->fontsize = isset($arr['fontsize']) ? $arr['fontsize'] : $GLOBALS['config']['captcha']['fontsize'];       $this->pixes = isset($arr['pixes']) ? $arr['pixes'] : $GLOBALS['config']['captcha']['pixes'];       $this->lines = isset($arr['lines']) ? $arr['lines'] : $GLOBALS['config']['captcha']['lines'];       $this->str_len = isset($arr['str_len']) ? $arr['str_len'] : $GLOBALS['config']['captcha']['str_len'];     }     /*      * 产生验证码图片     */     public function generate(){       //制作画布       $img = imagecreatetruecolor($this->width,$this->height);       //给定背景色       $bg_color = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));       imagefill($img,0,0,$bg_color);       //制作干扰线       $this->getLines($img);       //增加干扰点       $this->getPixels($img);       //增加验证码文字       $captcha = $this->getCaptcha();       //文字颜色       $str_color = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));       //写入文字       //计算文字应该出现的起始位置       $start_x = ceil($this->width/2) - 25;       $start_y = ceil($this->height/2) - 8;       if(imagestring($img,$this->fontsize,$start_x,$start_y,$captcha,$str_color)){         //成功:输出验证码         header('Content-type:image/png');         imagepng($img);       }else{         //失败         return false;       }     }     /*      * 获取验证码随机字符串      * @return string $captcha,随机验证码文字     */     private function getCaptcha(){       //获取随机字符串       $str = implode('',array_merge(range('a','z'),range('A','Z'),range(1,9)));       //随机取       $captcha = '';  //保存随机字符串       for($i = 0,$len = strlen($str);$i < $this->str_len;$i++){         //每次随机取一个字符         $captcha .= $str[mt_rand(0,$len - 1)] . ' ';       }       //将数据保存到session       $_SESSION['captcha'] = str_replace(' ','',$captcha);       //返回值       return $captcha;     }     /*      * 增加干扰点      * @param1 resource $img     */     private function getPixels($img){       //增加干扰点       for($i = 0;$i < $this->pixes;$i++){         //分配颜色         $pixel_color = imagecolorallocate($img,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));         //画点         imagesetpixel($img,mt_rand(0,$this->width),mt_rand(0,$this->height),$pixel_color);       }     }     /*      * 增加干扰线      * @param1 resource $img,要增加干扰线的图片资源     */     private function getLines($img){       //增加干扰线       for($i = 0;$i < $this->lines;$i++){         //分配颜色         $line_color = imagecolorallocate($img,mt_rand(150,200),mt_rand(150,200),mt_rand(150,200));         //画线         imageline($img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$line_color);       }     }     /*      * 验证验证码      * @param1 string $captcha,用户提交的验证码      * @return bool,成功返回true,失败返回false     */     public static function checkCaptcha($captcha){       //验证码不区分大小写       return (strtolower($captcha) === strtolower($_SESSION['captcha']));     } }

关于“php如何封装验证码工具类”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

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

php
AI