自己封装————验证码工具类————

下面分享的是我自己封装的验证码工具类,在平时的项目中会比较经常用到的工具类,目前封装的这个工具类简易版的,如果有需要的伙伴可以拿去用,当然我建议用之前在配置文件里增加一些选项信息

    //验证码宽度
    private $width;
    //验证码高度
    private $height;
    //验证的个数
    private $length;
    //干扰点个数
    private $dots;
    //干扰点的类型
    private $type;
    //干扰线个数
    private $lines;
    //文字
    private $font;

方便在项目中对验证码的要求进行更改,以方便项目逻辑的需求,而且验证码所选用的字体需要和验证码工具类放在同一目录下,否则就要在配置文件中修改字体的路径才能实现验证码的显示


//创建验证码工具类
class captcha{
//验证码的各种参数


//验证码宽度
private $width;
//验证码高度
private $height;
//验证的个数
private $length;
//干扰点个数
private $dots;
//干扰点的类型
private $type;
//干扰线个数
private $lines;
//文字
private $font;


//验证码属性的构造方法
public function __construct($arr=array()){
//将属性赋值
$this->width =isset($arr[‘width‘ ]) ? trim($arr[‘width‘ ]) : ‘270‘;
$this->height=isset($arr[‘height‘]) ? trim($arr[‘height‘]) : ‘30‘ ;
$this->length=isset($arr[‘length‘]) ? trim($arr[‘length‘]) : ‘4‘ ;
$this->dots =isset($arr[‘dots‘ ]) ? trim($arr[‘dots‘ ]) : ‘81‘ ;
$this->type =isset($arr[‘type‘ ]) ? trim($arr[‘type‘ ]) : ‘*‘ ;
$this->lines =isset($arr[‘lines‘ ]) ? trim($arr[‘lines‘ ]) : ‘5‘ ;
$this->font =isset($arr[‘font‘ ]) ? trim($arr[‘font‘ ]) : ‘/cambriab.ttf‘ ;


}


//创建验证码的方法
public function captcha(){


//创建画布
$img = imagecreatetruecolor($this->width, $this->height);


//填充颜色
//颜色资源
$color=imagecolorallocate($img, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
//填充背景
imagefill($img, 0,0,$color);


//添加干扰点
for($i=0;$i<$this->dots;$i++){
//颜色资源
$dots_color=imagecolorallocate($img, mt_rand(150,200), mt_rand(150,200), mt_rand(150,200));
//插入干扰点
imagestring($img,mt_rand(1,5) , mt_rand(0,$this->width), mt_rand(0,$this->height), $this->type,$dots_color );
}


//添加干扰线
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);
}


//首先获取验证码,然后插入验证文字
//文字高度
$size=mt_rand(18,20);
//获取验证码
$str=$this->captchastring();


for($i=0;$i<strlen($str);$i++){
//颜色资源
$str_color=imagecolorallocate($img, mt_rand(50,150), mt_rand(50,150), mt_rand(50,150));
//插入验证码
imagettftext($img, $size, mt_rand(-45,45),$this->width/($this->length+2)*($i+1), (($this->height-$size)/2)+$size, $str_color,$this->font , $str[$i]);
}


//将得到的验证码存入SESSION中,便于以后的验证码判断
@session_start();
$_SESSION[‘captcha‘]=$str;


//输出图片
header("content-type:image/png");
imagepng($img);
//清除资源
imagedestroy($img);
}


//获取随机的验证内容:A-Z,a-z,1-9
private function captchaString(){
//获取四个随机的字符串
$str="";
for($i=0;$i<$this->length;$i++){
switch(mt_rand(1,3)){
case 1 : $str .= chr(mt_rand(49,57));
break;
case 2 : $str .= chr(mt_rand(97,122));
break;
case 3 : $str .= chr(mt_rand(65,90));
break;
}
}
return $str;
}


//判断验证码
public static function checkCaptcha($captcha){
@session_start();
return strtoupper($captcha) === strtoupper($_SESSION[‘captcha‘]);
}
}

				
时间: 2024-08-28 12:45:25

自己封装————验证码工具类————的相关文章

DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式.Data Accessor 模式实现了数据访问和业务逻辑的分离:Active Domain Object 模式实现了业务数据的对象化封装. 需要注意的是,DAO设计模式是Java EE中的设计模式,而非Ja

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea

封装JDBC工具类

JDBC连接数据库基本的步骤是固定的,这样就可以考虑封装一个工具类来简化数据库操作. 封装时用到了Java中的properties配置文件,是以一种键值对的形式存在的,可以把连接数据库要动态的信息保存到里面,这样比较直观,不容易出错,而且容易维护. 把配置文件放到src下就可以,如果要放到包下面就配置文件的相对路径就必须从包名开始. Demo : db.properties mysqlDriver=com.mysql.jdbc.Driver mysqlURL=jdbc:mysql://local

导入导出封装的工具类 (一) 利用POI封装

对于导入导出各个项目中几乎都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是目前比较流程和常用的框架,有必要都了解一下. 写了写代码觉得导入导出这一块底层都是一样的,几乎所有的框架和别的牛人也好都是底层利用POI或JXL实现,比的是谁对这部分封装的好而且每个项目中对导入导出具体的细节是不同的,因此,有必要了解了解怎么样操作POI,学学使用它的API做导入导出也许第一步你封装的没有别人那么好,你也会收获很多了解他们封装的思路

JAVA中封装JSONUtils工具类及使用

在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. 封装后的JSON工具类JSONUtils.java代码如下: JSONUtils代码,点击展开 import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Itera

轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象

上一篇文章中,简单分享一下封装HttpClient工具类的思路及部分代码,本文将分享如何实现插件式配置HttpClient对象. 如果你看过我前面的几篇关于HttpClient的文章或者官网示例,应该都知道HttpClient对象在创建时,都可以设置各种参数,但是却没有简单的进行封装,比如对我来说比较重要的3个:代理.ssl(包含绕过证书验证和自定义证书验证).超时.还需要自己写.所以这里我就简单封装了一下,顺便还封装了一个连接池的配置. 其实说是插件式配置,那是高大上的说法,说白了,就是采用了

MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4059514.html 联系方式:[email protected] [正文] 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据

图片验证码工具类

图片验证码工具类 文章 https://blog.csdn.net/lzxlfly/article/details/93381526 需求 session中放入登录验证码,一定时间后定时清除. 每次使用过验证码后清除,需要重新生成验证码. 工具类 package com.yuantiao.smartcardms.util; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; i

Java 验证码工具类

验证码代码工具代码如下: import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import java.