美文网首页
关于验证码的实现

关于验证码的实现

作者: bboyAyao | 来源:发表于2018-06-19 20:41 被阅读0次

页面代码:根据http协议,通过修改src,再通过点击事件,来让网页不断发新的请求,从而刷新验证码。

<tr>
     <td>驗證碼:</td>
     <td><img src="/verificationcode" alt="驗證碼" id="verificationcode"></td>
</tr>
<script>
        src = '/verificationcode?n='
        verificationcode = document.getElementById('verificationcode')
        verificationcode.onclick = function(){
            verificationcode.src = src + new Date().getTime()
        }
</script>

urls.py文件下修改:

 url(r'^verificationcode$',views.verificationcode)

绘制验证码:

from django.http import HttpResponse
def verificationcode(request):
    #引入绘图模块
    from PIL import Image, ImageDraw, ImageFont
    #引入随机函数模块
    import random
    #定义变量,用于画面的背景色、宽、高
    bgcolor = (random.randrange(120, 200), random.randrange(
        120, 200), 255)
    width = 100
    height = 25
    #创建画面对象
    im = Image.new('RGB', (width, height), bgcolor)
    #创建画笔对象
    draw = ImageDraw.Draw(im)
    #调用画笔的point()函数绘制噪点
    for i in range(0, 100):
        xy = (random.randrange(0, width), random.randrange(0, height))
        fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
        draw.point(xy, fill=fill)
    #定义验证码的备选值
    str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
    #随机选取4个值作为验证码
    rand_str = ''
    for i in range(0, 4):
        rand_str += str1[random.randrange(0, len(str1))]
    #构造字体对象
    font = ImageFont.truetype('FreeMono.ttf', 23)
    #构造字体颜色
    fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
    #绘制4个字
    draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)
    draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)
    draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)
    draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)
    #释放画笔
    del draw

    from io import BytesIO
    #创建内存读写的对象
    buf = BytesIO()
    im.save(buf, 'png')
    buf.getvalue()
    #放入session中
    request.session['verificationcode'] = rand_str
    #关闭浏览器即结束会话
    request.session.set_expiry(0)
    #将内存中的图片数据返回给客户端,MIME类型为图片png
    return HttpResponse(buf.getvalue(), 'image/png')

相关文章

  • springboot + shiro 验证码与记住登录

    源码项目地址 验证码实现 关于kaptcha kaptcha 是一个很有用的验证码生成工具。有了它,你能够生成各种...

  • 关于验证码的实现

    页面代码:根据http协议,通过修改src,再通过点击事件,来让网页不断发新的请求,从而刷新验证码。 urls.p...

  • 关于安卓自定义验证码输入框的实现

    题目:关于安卓自定义验证码输入框的实现 在安卓登录界面,常常需要用到验证码登录,这个时候,自定义验证码输入框就能派...

  • Java实现验证码制作

    Java实现验证码制作 第一章 概述 1.1 验证码概述 为什么要使用验证码什么是验证码使用Servlet实现验证...

  • PHP之验证码制作

    php实现字母验证码 php通过session存储验证信息 验证码通过表单提交、校验 使用js实现动态校验验证码

  • 2018-09-04

    Java生成图形验证码与前端输入验证 在刷牛客时,遇到了关于web表单登陆中图形验证码实现的问题,所以试着将其编码...

  • Django-实现图形验证码、短信验证码功能(二)

    接上文:Django-实现图形验证码、短信验证码功能(一) 短信验证码后端发送实现 在settings中添加red...

  • iOS 验证码输入一种实现思路

    iOS 验证码输入一种实现思路 iOS 验证码输入一种实现思路

  • 短信API实现自动化短信发送

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

  • 接入短信API,免费试用

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

网友评论

      本文标题:关于验证码的实现

      本文链接:https://www.haomeiwen.com/subject/hsrzeftx.html