代码如下所示:
//验证码类
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
3、引用到页面中,代码如下:
4、一个完整的验证页面,代码如下:
<?php
session_start();
//在页首先要开启session,
//error_reporting(2047);
session_destroy();
//将session去掉,以每次都能取新的session值;
//用seesion 效果不错,也很方便
?>
<html>
<head>
<title>session 图片验证实例</title>
<style type="text/css">
#login p{
margin-top: 15px;
line-height: 20px;
font-size: 14px;
font-weight: bold;
}
#login img{
cursor:pointer;
}
form{
margin-left:20px;
}
</style>
</head>
<body>
<form id="login" action="" method="post">
<p>此例为session验证实例</p>
<p>
<span>验证码:</span>
<input type="text" name="validate" value="" size=10>
<img title="点击刷新" src="./captcha.php" align="absbottom" onclick="this.src='captcha.php?'+Math.random();"></img>
</p>
<p>
<input type="submit">
</p>
</form>
<?php
//打印上一个session;
//echo "上一个session:<b>".$_SESSION["authnum_session"]."</b><br>";
$validate="";
if(isset($_POST["validate"])){
$validate=$_POST["validate"];
echo "您刚才输入的是:".$_POST["validate"]."<br>状态:";
if($validate!=$_SESSION["authnum_session"]){
//判断session值与用户输入的验证码是否一致;
echo "<font color=red>输入有误</font>";
}else{
echo "<font color=green>通过验证</font>";
}
}
?>
总结
以上所述是小编给大家介绍的PHP验证码类文件及调用方式代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# php
# 验证码类文件
# 验证码
# PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
# php实现算术验证码功能
# PHP封装的验证码工具类定义与用法示例
# PHP实现随机数字、字母的验证码功能
# php生成复杂验证码(倾斜
# 正弦干扰线
# 黏贴
# 旋转)
# PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
# 一个漂亮的php验证码类(分享)
# PHP生成图片验证码、点击切换实例
# 如何打开php的gd2库
# 基于GD2图形库的PHP生成图片缩略图类代码分享
# PHP基于GD2函数库实现验证码功能示例
# 小编
# 的是
# 在此
# 句柄
# 都能
# 也很
# 给大家
# 所示
# 先把
# 所述
# 给我留言
# 要写
# 感谢大家
# 保存为
# 新建一个
# 页首
# 疑问请
# 有任何
# 此例
相关文章:
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何使用Golang table-driven基准测试_多组数据测量函数效率
打鱼网站制作软件,波克捕鱼官方号怎么注册?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
大连网站设计制作招聘信息,大连投诉网站有哪些?
微信小程序 五星评分(包括半颗星评分)实例代码
平台云上自助建站如何快速打造专业网站?
如何在阿里云香港服务器快速搭建网站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
建站主机服务器选购指南:轻量应用与VPS配置解析
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
b2c电商网站制作流程,b2c水平综合的电商平台?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
网站制作说明怎么写,简述网页设计的流程并说明原因?
建站为何优先选择香港服务器?
网站制作公司排行榜,抖音怎样做个人官方网站
如何在建站宝盒中设置产品搜索功能?
如何自定义建站之星网站的导航菜单样式?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何快速使用云服务器搭建个人网站?
建站之星如何实现五合一智能建站与营销推广?
高防服务器租用如何选择配置与防御等级?
音乐网站服务器如何优化API响应速度?
江苏网站制作公司有哪些,江苏书法考级官方网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
c++怎么用jemalloc c++替换默认内存分配器【性能】
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何用wdcp快速搭建高效网站?
建站主机选哪种环境更利于SEO优化?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
网站设计制作公司地址,网站建设比较好的公司都有哪些?
定制建站哪家更专业可靠?推荐榜单揭晓
Swift中循环语句中的转移语句 break 和 continue
如何通过网站建站时间优化SEO与用户体验?
股票网站制作软件,网上股票怎么开户?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
大连 网站制作,大连天途有线官网?
北京专业网站制作设计师招聘,北京白云观官方网站?
建站主机如何安装配置?新手必看操作指南
如何选择CMS系统实现快速建站与SEO优化?
建站之星下载版如何获取与安装?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
已有域名如何快速搭建专属网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
建站主机无法访问?如何排查域名与服务器问题
Thinkphp 中 distinct 的用法解析
*请认真填写需求信息,我们会在24小时内与您取得联系。