博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中的验证码类(验证码功能设计之二)
阅读量:6427 次
发布时间:2019-06-23

本文共 1722 字,大约阅读时间需要 5 分钟。

运行结果:

<!--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);
}

}

转载于:https://www.cnblogs.com/webforward/p/5418783.html

你可能感兴趣的文章
什么是Scrum
查看>>
nginx负载均衡的5种策略
查看>>
90%人都不知道:SVN 和 Git 的一些误解和真相
查看>>
防火墙配置十大任务之九,验证防火墙的运行
查看>>
【linux】浅谈Linux下的 find 指令
查看>>
CentOS 7 使用kubeadm 部署 Kubernetes
查看>>
我的友情链接
查看>>
透视美国大数据爆发全景
查看>>
java学习第一天1.2
查看>>
清空输入缓冲区的方法
查看>>
Yii2 项目优化小贴士
查看>>
UIScrollView的判断位置的属性如下:
查看>>
Applicatin Loader上传app步骤记录
查看>>
两种方法修改table表的内容
查看>>
张小龙莫慌 马化腾莫急 你们要好好的 微信还有时间
查看>>
一些常用软件静默安装参数(nsis,msi,InstallShield ,Inno)
查看>>
部署mimic版本的Ceph分布式存储系统
查看>>
Java缓冲流细节
查看>>
IOS中复制对象的用法及深拷贝和浅拷贝详解
查看>>
lfs
查看>>