php实现的验证码文件类实例


Posted in PHP onJune 18, 2015

本文实例讲述了php实现的验证码文件类。分享给大家供大家参考。具体如下:

<?php
/**
* @file
* @version 1.0
* @author  网海浪子
* @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();
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php面向对象全攻略 (七) 继承性
Sep 30 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
PHP判断是否有Get参数的方法
May 05 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php图片上传类 附调用方法
May 15 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
thinkphp5使用无限极分类
Feb 18 PHP
php实现的简单检验登陆类
Jun 18 #PHP
php实现比较全的数据库操作类
Jun 18 #PHP
php文件操作相关类实例
Jun 18 #PHP
php身份证号码检查类实例
Jun 18 #PHP
PHP批量生成图片缩略图的方法
Jun 18 #PHP
基于php的CMS中展示文章类实例分析
Jun 18 #PHP
php实现的用户查询类实例
Jun 18 #PHP
You might like
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
js 窗口抖动示例
2013/09/04 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
实习生个人的自我评价
2013/12/08 职场文书
廉政教育心得体会
2014/01/01 职场文书
环保标语大全
2014/06/12 职场文书
新入职员工工作总结
2015/10/15 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
PHP中多字节字符串操作实例详解
2021/08/23 PHP