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