运行结果:

<!--vcode.class.php内容-->

<?php
class Vcode {
private $width; //宽
private $height; //高
private $num; //数量
private $code; //验证码
private $img; //图像的资源

//构造方法, 三个参数
function __construct($width, $height, $num) {
$this->width = $width;
$this->height = $height;
$this->num = $num;
$this->code = $this->createcode(); //调用自己的方法
}

//获取字符的验证码, 用于保存在服务器中
function getcode() {
return $this->code;
}

//输出图像
function outimg() {
//创建背景 (颜色, 大小, 边框)
$this->createback();

//画字 (大小, 字体颜色)

//干扰元素(点, 线条)

//输出图像
$this->printimg();
}

//创建背景
private function createback() {
//创建资源
$this->img = imagecreatetruecolor($this->width, $this->height);
//设置随机的背景颜色
$bgcolor = imagecolorallocate($this->img, rand(225, 255), rand(225, 255), rand(225, 255));
//设置背景填充
imagefill($this->img, 0, 0, $bgcolor);
//画边框
$bordercolor = imagecolorallocate($this->img, 0, 0, 0);

imagerectangle($this->img, 0, 0, $this->width-1, $this->height-1, $bordercolor);
}

//画字
private function outstring() {

}

//设置干扰元素
private function setdisturbcolor() {

}

//输出图像
private function printimg() {
if (imagetypes() & IMG_GIF) {
header("Content-type: image/gif");
imagegif($this->img);
} elseif (function_exists("imagejpeg")) {
header("Content-type: image/jpeg");
imagegif($this->img);
} elseif (imagetypes() & IMG_PNG) {
header("Content-type: image/png");
imagegif($this->img);
} else {
die("No image support in this PHP server");
}

}

//生成验证码字符串
private function createcode() {
$codes = "3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY";

$code = "";

for($i=0; $i < $this->num; $i++) {
$code .=$codes{rand(0, strlen($codes)-1)};
}

return $code;
}

//用于自动销毁图像资源
function __destruct() {
imagedestroy($this->img);
}

}

最新文章

  1. 模板化的七种排序算法,适用于T* vector&lt;T&gt;以及list&lt;T&gt;
  2. BFC的深入理解
  3. Single-page app(SPA)
  4. MySQL SQL优化之in与range查询【转】
  5. SQL语法中的子查询Subqueries
  6. 【转】Spring jar包详解
  7. hdu4933 Miaomiao&#39;s Function
  8. HDU 3351
  9. 黑马程序猿_Java 代理机制学习总结
  10. oracle中的rowid--伪列-删除表中的重复内容-实用
  11. UVA 10574 - Counting Rectangles(枚举+计数)
  12. NTP工作机制及时间同步的方法
  13. 在静态方法里调用spring注入的方法
  14. C#遍历指定文件夹中的所有文件(转)
  15. 【Spark2.0源码学习】-3.Endpoint模型介绍
  16. C++入门篇六
  17. 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)
  18. 2017-2018-2 20165325 实验三《Java面向对象程序设计》实验报告
  19. gitlab数据库
  20. Linux 设置IP地址,并能连接外网

热门文章

  1. Python基础篇 -- 集合
  2. Python——函数的高级应用
  3. NIOP 膜你题
  4. @private@protected@public@package
  5. 66. Plus One@python
  6. 转 Keras 保存与加载网络模型
  7. MYSQL导入数据:Table XXX doesn&#39;t exist的解决
  8. VS自学日记整理
  9. 科学计算库Numpy——概述
  10. 笔记-python-*号解包