验证码图片生成和验证

开发工具与关键技术:VS    验证码
作者:听民谣的老猫
撰写时间:2019/6/7   13:10
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190609185843868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU0MDIzNg==,size_16,color_FFFFFF,t_70)   

一些网页或者app的登录都需要验证码的验证。
验证码图片生成

在这里插入图片描述
上面返回的是图片的二进制数组。图片也是保存到MemoryStream中的。
(随机字符的生成在我2019-02-24的博客中有讲解)
然后到验证码页面对应的控制器写验证码的方法

1 生成长度为5的随机的验证码字符串
string strRandom = ValidCodeUtils.GetRandomCode(5);
2 根据生成的验证码字符串生成 验证码图片
byte[] byteImg = ValidCodeUtils.CreateImage(strRandom);
3 验证码字符串存入session中 key值为
(验证码验证是将你输入的验证码与Session中保存的验证码作比较)
Session[“validCode”] = strRandom;
4 把图片返回到视图
return File(byteImg, @“image/jpeg”)(图片类型);
(将上面的四个步骤,用方法封装好后在对应的img标签处将路径填写至这个方法,图片也就生成好了。)

验证码的验证

验证码的切换
在这里插入图片描述
(因为浏览器的缓存机制,所以我们需要拼接毫秒的方式来生成新的路径。这样才能达到验证码的点击切换)

获取页面上的验证码输入值

var validCode = $(’#fmLogin [name=“validCode”]’).val();
在这里插入图片描述
在页面控制器写验证码判断方法(方法名要和上面post路径上的方法名一致)

 public ActionResult UserLogin()
{ 
           1 定义一个记录状态的变量
            string strMsg = "fail";
           2  获取页面传递的验证码
string strValidCode = Request["validCode"];
3 获取session中的验证码  判断验证码   
string sessionValidCode = String.Empty;
捕获异常
try
            {
                sessionValidCode = Session["validCode"].ToString();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);无效果 只是避免e未使用的警告
                //throw;
   }
4 判断用户输入的验证码和session中拿到的验证码是否一致(忽略大小写)
if (sessionValidCode.Equals(strValidCode.Trim(), StringComparison.CurrentCultureIgnoreCase))
            {
                strMsg = "success";验证码正确
            }
            else
            {
                strMsg = "validCodeErro";验证码错误
            }
            return Json(strMsg, JsonRequestBehavior.AllowGet);
 }

演示
验证码错误

在这里插入图片描述
在这里插入图片描述

验证码正确
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Python 中生成验证验证码的代码示例: ```python import random import string from PIL import Image, ImageDraw, ImageFont # 生成随机的验证码字符串 def generate_code(length=4): chars = string.ascii_letters + string.digits # 字符集 code = ''.join(random.choices(chars, k=length)) # 随机生成验证码 return code # 生成验证码图片 def generate_image(code, size=(120, 50)): image = Image.new('RGB', size, (255, 255, 255)) # 创建图片对象 font = ImageFont.truetype('arial.ttf', 36) # 字体对象 draw = ImageDraw.Draw(image) # 图片绘制对象 # 绘制验证码字符串 for i, c in enumerate(code): x = 20 + i * 30 y = 10 draw.text((x, y), c, font=font, fill=(0, 0, 0)) # 绘制干扰线 for i in range(10): x1 = random.randint(0, size[0]) y1 = random.randint(0, size[1]) x2 = random.randint(0, size[0]) y2 = random.randint(0, size[1]) draw.line((x1, y1, x2, y2), fill=(0, 0, 0)) # 绘制干扰点 for i in range(100): x = random.randint(0, size[0]) y = random.randint(0, size[1]) draw.point((x, y), fill=(0, 0, 0)) return image # 验证验证码 def check_code(code, input_code): return code.lower() == input_code.lower() # 示例代码 if __name__ == '__main__': code = generate_code() # 生成验证码字符串 image = generate_image(code) # 生成验证码图片 image.show() # 显示验证码图片 input_code = input('请输入验证码:') # 用户输入验证码 if check_code(code, input_code): # 验证验证码 print('验证码正确') else: print('验证码错误') ``` 这段代码首先生成一个随机的验证码字符串,然后使用 PIL 库生成一个验证码图片验证码图片包括验证码字符串、干扰线和干扰点。用户输入验证码后,使用 check_code() 函数验证是否正确。最后,可以根据验证结果给出相应的提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值