千家信息网

php怎么实现验证码类

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关php怎么实现验证码类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。直接上代码://验证码类class ValidateCode {private
千家信息网最后更新 2025年01月23日php怎么实现验证码类

这篇文章给大家分享的是有关php怎么实现验证码类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

直接上代码:

//验证码类
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子
private $code;//验证码
private $codelen = 4;//验证码长度
private $width = 130;//宽度
private $height = 50;//高度
private $img;//图形资源句柄
private $font;//指定的字体
private $fontsize = 20;//指定字体大小
private $fontcolor;//指定字体颜色
//构造方法初始化
public function __construct() {
$this->font = dirname(__FILE__).'/font/elephant.ttf';//注意字体路径要写对,否则显示不了图片
}
//生成随机码
private function createCode() {
$_len = strlen($this->charset)-1;
for ($i=0;$i<$this->codelen;$i++) {
$this->code .= $this->charset[mt_rand(0,$_len)];
}
}
//生成背景
private function createBg() {
$this->img = imagecreatetruecolor($this->width, $this->height);
$color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
}
//生成文字
private function createFont() {
$_x = $this->width / $this->codelen;
for ($i=0;$i<$this->codelen;$i++) {
$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
}
}
//生成线条、雪花
private function createLine() {
//线条
for ($i=0;$i<6;$i++) {
$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
//雪花
for ($i=0;$i<100;$i++) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
}
}
//输出
private function outPut() {
header('Content-type:image/png');
imagepng($this->img);
imagedestroy($this->img);
}
//对外生成
public function doimg() {
$this->createBg();
$this->createCode();
$this->createLine();
$this->createFont();
$this->outPut();
}
//获取验证码
public function getCode() {
return strtolower($this->code);
}
}


输出实例:

使用方法:
1、先把验证码类保存为一个名为 ValidateCode.class.php 的文件;
2、新建一个名为 captcha.php 的文件进行调用该类;
captcha.php

复制代码 代码如下:


session_start();
require './ValidateCode.class.php'; //先把类包含进来,实际路径根据实际情况进行修改。
$_vc = new ValidateCode(); //实例化一个对象
$_vc->doimg();
$_SESSION['authnum_session'] = $_vc->getCode();//验证码保存到SESSION中


3、引用到页面中,代码如下:

复制代码 代码如下:




4、一个完整的验证页面,代码如下:

复制代码 代码如下:


session_start();
//在页首先要开启session,
//error_reporting(2047);
session_destroy();
//将session去掉,以每次都能取新的session值;
//用seesion 效果不错,也很方便
?>


session 图片验证实例



此例为session验证实例



验证码:







//打印上一个session;
//echo "上一个session:".$_SESSION["authnum_session"]."
";
$validate="";
if(isset($_POST["validate"])){
$validate=$_POST["validate"];
echo "您刚才输入的是:".$_POST["validate"]."
状态:";
if($validate!=$_SESSION["authnum_session"]){
//判断session值与用户输入的验证码是否一致;
echo "输入有误";
}else{
echo "通过验证";
}
}
?>

感谢各位的阅读!关于"php怎么实现验证码类"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

验证 代码 生成 字体 实例 输入 不错 内容 图片 实际 文件 方法 更多 篇文章 线条 路径 雪花 页面 输出 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发工程师的压力 软件开发面试简历模板 北京易企网络技术有限公司 被盗丢失手机数据库 防火墙强化网络安全策略 思科云软件开发 湖南ntp时钟服务器虚拟主机 普洱公安局网络安全检查 网络安全中专可以就业吗 服务器数据库连不上的原因 网络安全截获属于被动攻击的是 医院网络安全工作考核制度 能检索外文图书的数据库有哪些 数据库如何改变表格 服务器打开后不亮了怎么回复 sql数据库体系 数据库带条件的更新函数 聊天软件开发厂家有哪些 西藏第三方软件开发定制大概费用 如何在dbms上建立数据库 hana数据库永久免费 软件开发公司要缴纳税吗 网络安全提升服务方案 深圳龙岗教育软件开发公司 政府网络安全风险隐患排查 1998年主流的数据库 天津通信软件开发过程标准 小学网络安全家长会活动报道 全国网络安全积极发展 服务器打开后不亮了怎么回复
0