首页 > 其他分享 >图形验证码 captcha的使用

图形验证码 captcha的使用

时间:2023-04-19 20:55:51浏览次数:34  
标签:base64Captcha string 验证码 captcha 100 图形 id

使用效果:

 

 

使用说明:

1、点击图片 或者 点击看不清 换一张,会自动更换。

  2、输入错误,也会自动再更换一张。确保安全

 

验证码文件:common/captcha.go 

package common

import (
	"github.com/gin-gonic/gin"
	"github.com/go-playground/validator/v10"
	"github.com/mojocn/base64Captcha"
	"image/color"
	"net/http"
)

var store = base64Captcha.DefaultMemStore
// 获取验证码
func GetCaptcha(c *gin.Context) {
	//配置验证码
	driverString := base64Captcha.DriverString{
		Height:          60,
		Width:           200,
		NoiseCount:      0,     //噪点数
		ShowLineOptions: 2 | 4, //干扰线
		Length:          4,
		Source:          "123456789abcdefghijklmnopqrstuvwxwz",
		BgColor: &color.RGBA{
			R: 100,
			G: 100,
			B: 100,
			A: 100,
		},
		Fonts: []string{"wqy-microhei.ttc"},
	}

	var driver base64Captcha.Driver = driverString.ConvertFonts()
	//生成验证码
	cap := base64Captcha.NewCaptcha(driver, store)
	id, b64s, err := cap.Generate()
	body := map[string]interface{}{"code": 1, "data": b64s, "captchaId": id, "msg": "success"}
	if err != nil {
		body = map[string]interface{}{"code": 0, "msg": err.Error()}
	}
	c.JSON(http.StatusOK, body)
}

// 自定义验证码的验证器
func VerifyCaptcha(f validator.FieldLevel) bool {
	captcha := f.Parent().FieldByName("Captcha").Interface().(string)
	captcha_id := f.Parent().FieldByName("CaptchaId").Interface().(string)

	if store.Verify(captcha_id, captcha, true) {
		return true
	}
	return false
}

 

Html调用代码:

<div class="row cl">
<div class="formControls col-xs-8 col-xs-offset-3">
<input name="captcha" id="captcha" class="input-text size-L" type="text" placeholder="验证码" onblur="if(this.value==''){this.value='验证码:'}" onclick="if(this.value=='验证码:'){this.value='';}" value="验证码:" style="width:150px;">
<img id="captcha_img" src="/admin/getCaptcha" onclick="showCaptcha()" style="width: 120px">
 <input type="hidden" name="captcha_id" id="captcha_id" />
<a id="kanbuq" href="javascript:showCaptcha();">看不清,换一张</a>
</div>
 </div>


<script type="text/javascript" src="/static/h-ui.lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" >
//显示验证码
    function showCaptcha(){
        $.get("/admin/getCaptcha",function (res){
            $("#captcha_img").attr("src",res.data)
            $("#captcha_id").val(res.captchaId)

        })
    }
showCaptcha()
</script>

  完结

标签:base64Captcha,string,验证码,captcha,100,图形,id
From: https://www.cnblogs.com/ypeih/p/17334582.html

相关文章

  • 02 绘制简单几何图形
    图形渲染管线与绘制简单几何图形1.图形渲染管线回顾简要回顾一下GAMES101中闫老师提到的图形渲染管线。图形渲染管线可以理解为,将原始的3维图形数据经过一系列变化处理后,转换为2维坐标,再将2维坐标转换为实际的屏幕像素的过程。这一过程可以简单的描述为:首先我们要做的是输......
  • 最新 chatGPT如何接收验证码?亲测秒到!
    写在前面:提示滥用问题是应为代理不干净的原因,更换代理即可!注册sms-activate账号首先进去官网:传送门主页大概长这样,不知道后期会不会更新!进去之后点击右上角注册账号!这种操作比较简单通过QQ邮箱即可注册,这里有一点就是QQ邮箱可能会拦截该网站的验证信息:在验证过程中如果......
  • 4.18 c++图形库easyx的基础编程
    头文件#include<graphcis.h>一基础绘图概念1.颜色用三原色表示RGB(红色部分,绿色部分,蓝色部分)每一部分的数值范围(0~255)。基本大写英文单词已对应例如BLUE蓝色2.窗口坐标的默认原点在左上角(0,0)x轴正方向向右,y轴正方向向下。二窗口函数initgraph(intwidth,intheigh......
  • 用虚函数分别计算各种图形的面积
    一、问题描述:定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,并求出它们的和。要求用基类指针数组。使它的每一个元素指向一个派生类的对象。PI=3.1415926输入格式:请在这......
  • python的matplotlib绘制动态图形(用animation中的FuncAnimation)
    %matplotlibauto#数据透视表:#统计各月每天的刷卡金额之和#month_day_df=pd.pivot_table(data_df,values="刷卡金额",index="日",columns="月份",aggfunc=np.sum)#用折线图表示1月份每天的刷卡金额之和importmatplotlib.pyplotaspltfrommatplotlib.animationimpor......
  • 识别验证码的使用
    muggle_ocr链接:https://pan.baidu.com/s/1w-sp-BQ1BCgOXYKRSo5nZg提取码:mubp下载完成之后,直接使用pipinstall语句即可:pipinstallmuggle-ocr-1.0.3.tar.gz-ihttps://pypi.douban.com/simplepip设定特定版本python-mpipinstallpip==20.2.4、ddddocr库的安装与......
  • deepin启动图形界面进不去解决方法
    有不少的用户已经使用上了deepin系统,但是在启动图形界面的时候有许多都遇到了进不去的情况,今天就给你们带来了deepin启动图形界面进不去解决方法,快来看看吧。deepin启动图形界面进不去怎么办:1、重启进入“recovery模式”开机后选择“advance”再选择“recovery”。2、启动网络......
  • Java Web应用设计中验证码的生成和应用方法
    在JavaWeb应用设计中验证码的设计是一个必不可少的环节,由于验证码技术具有随机性较强、简单的特点,能够在一定程度上阻止网络上的恶意访问,在互联网领域得到了广泛的应用,如防止破解密码、刷票、论坛灌水、刷页、注册等恶意操作。百度上对验证码的定义是:(CAPTCHA)“CompletelyAut......
  • R绘图基础—图形初阶
    《R语言实战》第3章—— 图形初阶#3图形初阶#####屏幕显示图形attach(mtcars)#将数据框添加到R的搜索路径中plot(wt,mpg)#默认散点图abline(lm(mpg~wt))#最优拟合曲线detach(mtcars)#将数据框从搜索路径中移除#保存图形####setwd('D:/personal_file/R')#设置工作目录si......
  • thinkphp: 用redis存储短信验证码(thinkphp v6.0.12LTS)
    一,配置redis1,编辑.env[REDIS0]TYPE=redisHOST=127.0.0.1PORT=6379PASSWORD=2,config/cache.php<?php//+----------------------------------------------------------------------//|缓存设置//+----------------------------------------------------......