/**

* @file

* @version  1.0

* @author   网海浪子

* @date  2006-3-30

* @email sxf02615@163.com

* @brief    验证码文件类

*

*/

?>

class CCheckCodeFile

{

//验证码位数

private $mCheckCodeNum  = 4;

//产生的验证码

private $mCheckCode   = '';

//验证码的图片

private $mCheckImage  = '';

//干扰像素

private $mDisturbColor  = '';

//验证码的图片宽度

private $mCheckImageWidth = '80';

//验证码的图片宽度

private $mCheckImageHeight  = '20';

/**

*

* @brief  输出头

*

*/

private function OutFileHeader()

{

header ("Content-type: image/png");

}

/**

*

* @brief  产生验证码

*

*/

private function CreateCheckCode()

{

$this->mCheckCode = strtoupper(substr(md5(rand()),0,$this->mCheckCodeNum));

return $this->mCheckCode;

}

/**

*

* @brief  产生验证码图片

*

*/

private function CreateImage()

{

$this->mCheckImage = @imagecreate ($this->mCheckImageWidth,$this->mCheckImageHeight);

imagecolorallocate ($this->mCheckImage, 200, 200, 200);

return $this->mCheckImage;

}

/**

*

* @brief  设置图片的干扰像素

*

*/

private function SetDisturbColor()

{

for ($i=0;$i<=128;$i++)

{

$this->mDisturbColor = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,255), rand(0,255));

imagesetpixel($this->mCheckImage,rand(2,128),rand(2,38),$this->mDisturbColor);

}

}

/**

*

* @brief  设置验证码图片的大小

*

* @param  $width  宽

*

* @param  $height 高

*

*/

public function SetCheckImageWH($width,$height)

{

if($width==''||$height=='')return false;

$this->mCheckImageWidth  = $width;

$this->mCheckImageHeight = $height;

return true;

}

/**

*

* @brief  在验证码图片上逐个画上验证码

*

*/

private function WriteCheckCodeToImage()

{

for ($i=0;$i<=$this->mCheckCodeNum;$i++)

{

$bg_color = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,128), rand(0,255));

$x = floor($this->mCheckImageWidth/$this->mCheckCodeNum)*$i;

$y = rand(0,$this->mCheckImageHeight-15);

imagechar ($this->mCheckImage, 5, $x, $y, $this->mCheckCode[$i], $bg_color);

}

}

/**

*

* @brief  输出验证码图片

*

*/

public function OutCheckImage()

{

$this ->OutFileHeader();

$this ->CreateCheckCode();

$this ->CreateImage();

$this ->SetDisturbColor();

$this ->WriteCheckCodeToImage();

imagepng($this->mCheckImage);

imagedestroy($this->mCheckImage);

}

}

$c_check_code_image = new CCheckCodeFile();

//$c_check_code_image ->SetCheckImageWH(100,50);//设置显示验证码图片的尺寸

$c_check_code_image ->OutCheckImage();

?>

itlearner注:能产生随机的英文字母和数字,不错!

PHP验证码类庫,php验证码类相关推荐

  1. php图片验证码类,php图片验证码类

    [php] /** * 图片验证码类 * 生成图片类型验证码,验证码包含数字和大写字母,session中存放md5加密后的验证码 * * 使用方法: * $captcha = new Catpcha( ...

  2. 59-Java:String类案例:验证码、登录、隐私号码

    String案例 1.String类开发验证码功能 需求: 随机生产一个5位的验证码,每位可能是数字.大写字母.小写字母. 分析: 定义一个String类型的变量存储验 a-z.A-Z.0-9 之间的 ...

  3. 注册与验证码php源代码,PHP验证码处理源代码

    /** * 安全的验证码要:验证码文字扭曲.旋转,使用不同字体,添加干扰码. * @原作者: 流水孟春 * @修 改: flymorn **/ class YL_Security_Secoder { ...

  4. java shape 空间操作类_设计三个类:几何形状类(Shape)、圆类(Circle)、矩形类(.,请编写 Java程序,设计一个“形状rdquo...

    问题标题 设计三个类:几何形状类(Shape).圆类(Circle).矩形类(.,请编写 Java程序,设计一个"形状&rdquo 2019-5-10来自ip:17.175.174. ...

  5. Python3 爬虫学习笔记 C12【验证码对抗系列 — 图形验证码】

    Python3 爬虫学习笔记第十二章 -- [验证码对抗系列 - 图形验证码] 文章目录 [12.1]关于普通图形验证码 [12.2]tesserocr 库识别验证码 [12.3]pytesserac ...

  6. 发送手机短信验证码-后端、前端(验证码倒计时)

    获取手机短信验证码-后端.前端(验证码倒计时) 后端 /*** 发送手机短信验证码** @return str* @throws Exception* @author 王永圣*/@RequestMap ...

  7. java邮箱验证码_Java实现邮箱验证码

    原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...

  8. 图形验证码和短信验证码

    图形验证码 注意事项 在虚拟环境中安装Pillow 字体文件需要在环境中测试一下(字体文件习惯放在和验证码同层目录下) import random # Image:是一个画板(context),Ima ...

  9. 用Python模拟识别图片验证码并发送手机验证码

    1.导语 大家好,好久不见.又到每日分享Python小技能的时候了.最近因为疫情影响,所以更新内容比较慢-今天周一,就来更新一波,心血来潮,是时候上线经营了.其实也没想到有啥好分享的,不如分享一些干货 ...

最新文章

  1. python升级知识整理 第四节: 面向对象
  2. 聚类算法是什么?聚类(clustering)有哪些常用的评估方法?评估方法的公示是什么?轮廓系数(Silhouette Coefficient)、平方根标准误差、R方、ARI分别是什么?
  3. mysql 常见错误_mysql常见的错误提示问题处理小结
  4. c++11-type_traits类型萃取
  5. RequestMapping注解的作用
  6. 扩展模块 php.ini_php相关的配置,PHP动态扩展模块
  7. 用SmarterFox替换Internet Explorer的“加速器”
  8. Java中继承、this关键字、super关键字
  9. AWK 之 RS、ORS与FS、OFS
  10. Codeforces 816C/815A - Karen and Game
  11. 在a标签中添加点击事件
  12. eigen 编译_四足机器人优化方法:Webots下Eigen与qpOASES非线性优化库环境搭建
  13. 微信接口请求次数_微信接口调用次数限制 支付宝微信提现
  14. ad15的stc元件库_STC8系列 STC15系列STCMCU Protel_Altium原理图PCB器件封装库文件
  15. 知识图谱之WordNet
  16. 百度地图定位到了非洲的问题
  17. 安静!听听AI眼中岛国老师的声音~
  18. SAP-MM知识精解-自动科目记账(04-2)- 业务事物之“科目分组代码”的影响
  19. 左转向善,右转向恶,2020 年的九大 AI 风向标
  20. 键盘定位板图纸_忆光GD64 PRO:集键盘所有功能于一身

热门文章

  1. 智能家居--domoticz配置和风天气 HTTP/HTTPS poller 的使用以及domoticz_updateDevice的介绍
  2. Resource.arsc文件格式解析
  3. “消费盲返”的商业模式,你知道多少?
  4. 在网上打印双面和单面的资料哪里打印价格便宜
  5. Java通过快递鸟-查询物流
  6. vs2008 下配置 opencv2.0 的总结,以及 vc6 下配置 opencv1.0 的转帖
  7. STM32CubeIDE使用
  8. java算术运算符乘方_用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;...
  9. 筑讯建筑:北京玫瑰博物馆——镂空的玫瑰盒子,从建筑外观判断建筑功用
  10. Java 类详解 9章