封装好的简单验证码类(带注释)

<?php
//开启session,用来保存验证码
session_start();

/**
 * 验证码的封装类
 * @param $w int 验证码图像的宽
 * @param $h int 验证码图像的高
 * @param $cn int 验证码的位数
 * @return $img resource 返回验证码图像资源
 */
class CheckCode{
	//定义属性
	private $width; //验证码图像的宽
	private $height;//验证码图像的高
	private $count;//验证码位数
	//构造函数,初始化私有属性
	function __construct($w,$h,$cn){
		$this->width=$w;
		$this->height=$h;
		$this->count=$cn;
		//echo $this->count;//验证传值
	}
	//得到随机字符,并存入session
	function getCode(){
		$string="0123456789abcdefghijklmnopqrstuvwxyz";
		//如果要使用大写字母,可以使用函数来转换
		//$stringU=strtoupper($string);
		$code="";
		for($i=0;$i<$this->count;$i++){
			$code.=$string[rand(0, strlen($string)-1)];
		}
		$_SESSION[‘verify‘]=$code; //被其它页面调用来进行验证
		return $code; //得到验证码字符串
	}
	//生成图像
	function getCheckCode(){
		header("content-type:image/gif");
		$img=imagecreate($this->width, $this->height);
		$bgcolor=imagecolorallocate($img, 255, 255, 255); //图像背景色
		$strColor=imagecolorallocate($img, 255, 0, 0);//验证码字符颜色
		$fontfile="simsunb.ttf";//字体文件文件路径
		$size=30; //字体大小
		$angle=rand(-5, 5); //字体倾斜角度
		//干扰元素的颜色
		$color=imagecolorallocate($img, 100, 100, 100);
		//调用糙点函数
		$this->createPix($img, $color);
		//调用干扰线
		$this->createLine($img,$color);
		//写入字符到图像
		imagettftext($img, $size, $angle, 15, 50, $strColor, $fontfile, $this->getCode());
		//输出图像
		imagegif($img);
		//销毁内存中的缓存
		imagedestroy($img);
	}
	//对图像添加糙点
	function createPix($image,$color){
		for($i=0;$i<200;$i++){
			imagesetpixel($image, rand(0, $this->width), rand(0, $this->height), $color);
		}
	}
	//添加干扰线
	function createLine($image,$color){
		for($i=0;$i<10;$i++){
			imageline($image, rand(0, $this->width), rand(0, $this->height),rand(0, $this->width), rand(0, $this->height), $color);
		}
	}
}

//调用方法如下
//实例化类的时候自动调用构造函数
$cc = new CheckCode(150, 80, 5);
$cc->getCheckCode();
时间: 2024-08-05 03:24:14

封装好的简单验证码类(带注释)的相关文章

java自动生成实体类(带注释)和controller层,service层 dao层 xml层,亲测可行

参考:https://blog.csdn.net/qq_37557563/article/details/90041523package test; import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.DataSourceConfig;imp

验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 四位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 简单验证码识别:验证码类型 : 数字+字母, 纯英文, 纯数字,计算题 英数_验证码识别:纯数字,纯英文,数字+英文 中英数_验证码识别:英文.数

4-5验证码类封装

1.Captcha.php 1 <?php 2 /** 3 * Captcha.php 4 5 * description 验证码类 6 */ 7 8 namespace Imooc\Lib; 9 10 require_once 'GDBasic.php'; 11 12 class Captcha extends GDBasic 13 { 14 //图像宽度 15 protected $_width = 60; 16 //图像高度 17 protected $_height = 25; 18 1

ThinkPHP 3.2.3 加减乘法验证码类

ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Verify/ 可以在 Verify.class.php 文件内进行修改,也可以单独写一个类继承自带的验证码类.如果单独写一个继承的类,可以重用父类的属性和方法,但是要注意的是父类中有一些属性和方法是私有(private)的,可以修改这些私有的属性和方法为保护(protected)的,如果不希望修改框架自

eclipse从数据库逆向生成Hibernate实体类(eclipse中反向生成hibernate实体类+jpa注释)

eclipse从数据库逆向生成Hibernate实体类 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再"自己"建立一变VO.意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表:要么就先进行数据库表设计,再逆向生成实体类.没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计. 原因是: 1. 1.5倍工作量,浪费时间.(时间对公司来说很重要) 2. 无法

包装一个php的验证码类

验证码是我们开发的时候经常用到的功能,所以在此本人包装了一个验证码类,应该可以作为php的类插件用,在此分享给各位博客园的读友. 实现的原理也是很简单,就是利用画布的几个元素,再加上一些字符串的获取,东凑西凑就构成了,呵呵. 这里大概写一下思路吧,其实这个类已经注释的非常清楚了,不过,个人还是在行文前啰嗦一下. 首先是关于一些函数的解释,这里的解释纯属个人体会,有什么错误的地方,还请读者指正. 1.创建画布函数:imagecreatetruecolor(w,h); 说明:用于创建一个画布. w

简单 验证码 功能

在贴代码之前首先简述一下验证验证码原理:随机获取验证码的值,把这个值存到session中,其作用可想而知就是要拿来跟前台数据作比较,通过Graphics将值进行模糊处理之后传到前台页面展示. 1 package com.skss.util; 2 3 4 import java.awt.Color; 5 import java.awt.Font; 6 import java.awt.Graphics; 7 import java.awt.image.BufferedImage; 8 import

关于IRIS数据集的Python分析-一份带注释的代码

所有内容都在python源码和注释里,可运行! ########################### #说明: # 撰写本文的原因是,笔者在研究博文“http://python.jobbole.com/83563/”中发现 # 原内容有少量笔误,并且对入门学友缺少一些信息.于是笔者做了增补,主要有: # 1.查询并简述了涉及的大部分算法: # 2.添加了连接或资源供进一步查询: # 3.增加了一些lib库的基本操作及说明: # 4.增加了必须必要的python的部分语法说明: # 5.增加了对

THINKPHP源码学习--------验证码类

TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.php 首先分段来阅读源码 1.namespace Think; Class Verify表示Thinkphp命名空间下的Verify类 2. protected $config = array( 'seKey'    => 'ThinkPHP.CN', // 验证码加密密钥 'codeSet'  =