php验证码 生成类
PHP验证码
调用
1 2 3 4 |
// 验证码 public function captcha(){ VeriCode::create(); } |
验证码类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/** * 验证码类 */ class VeriCode{ // 获取验证码配置 private static function _getCodeConfig(){ return [ // 验证码字符集 'codeStr' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', // 验证码个数 'codeCount' => 4, // 字体大小 'fontsize' =>16, // 验证码的宽度 'width' => 100, // 验证码高度 'height' => 36, // 是否有干扰点?true有,false没有 'disturbPoint' => true, // 干扰点个数,disturbPoint开启后生效 'pointCount' => 200, // 是否有干扰条?true有,false没有 'disturbLine' => true, // 干扰条个数,disturbLine开启后生效 'lineCount' => 3 ]; } // 创建图片验证码 public static function create(){ // 配置 $config = self::_getCodeConfig(); //创建画布 $image = imagecreatetruecolor($config['width'],$config['height']); //背景颜色 $bgcolor=imagecolorallocate($image,255,255,255); imagefill($image,0,0,$bgcolor); $captch_code = '';//存储验证码 $captchCodeArr = str_split($config['codeStr']); //随机选取4个候选字符 for($i=0;$i<$config['codeCount'];$i++){ $fontsize = $config['fontsize']; $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//随机颜色 $fontcontent = $captchCodeArr[rand(0,strlen($config['codeStr'])-1)]; $captch_code.=$fontcontent; $_x = $config['width']/$config['codeCount']; $x=($i*(int)$_x)+rand(5,10); //随机坐标 $y=rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); // 水平地画一行字符串 } session_start(); $_SESSION['code']=$captch_code; //增加干扰点 if($config['disturbPoint']){ for($i=0;$i<$config['pointCount'];$i++){ $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor); } } //增加干扰线 if($config['disturbLine']){ for($i=0;$i<$config['lineCount'];$i++){ $linecolor=imagecolorallocate($image,rand(80,280),rand(80,220),rand(80,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor); } } //输出格式 header('content-type:image/png'); imagepng($image); //销毁图片 imagedestroy($image); } } |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。