canvas基础之图形验证码的示例


Posted in HTML / CSS onJanuary 02, 2018

在通常的登录界面我们都可以看到验证码,验证码的作用是检测是不是人在操作,防止机器等非人操作,防止数据库被轻而易举的攻破。

验证码一般用PHP和java等后端语言编写;

但是在前端,用canva或者SVG也可以绘制验证码;

直接上干货:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            canvas {
                border: 1px solid red;
            }
        </style>
    </head>

    <body>
        <canvas id="myCanvas" width="100" height="40">
            您的浏览器不支持canvas
        </canvas>
    </body>
    <script type="text/javascript">
        var myCanvas = document.getElementById("myCanvas");
        var context = myCanvas.getContext("2d");
        //随机字符(透明度)(大小随机,位置随机);
        var strStore = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        //随机函数
        function roundNum(min, max) {
            return parseInt(Math.random() * (max - min) + min);
        }
        //文字内容部分:
        var str = "";
        for(var i = 0; i < 5; i++) {
            context.beginPath();
            //随机颜色(浅色:RGB - 200~250)
            var color = `rgb(${roundNum(0,255)},${roundNum(0,255)},${roundNum(0,255)})`;
            context.fillStyle = color;
            context.font = roundNum(20,30)+"px Arial";
            context.textAlign = "center";
            str = strStore[roundNum(0,strStore.length)];
            context.fillText(str, 10 + 18 * i, roundNum(20,35));
        }

        //10个左右的随机(长度随机,位置随机),干扰线
        for(var j = 0; j < roundNum(5, 10); j++) {
            context.beginPath();
            var color = `rgb(${roundNum(0,255)},${roundNum(0,255)},${roundNum(0,255)})`;
            context.strokeStyle = color;
            context.moveTo(roundNum(0, 100), roundNum(0, 40));
            context.lineTo(roundNum(0, 100), roundNum(0, 40));
            context.stroke();
        }

        //干扰项:10个左右的随机(半径随机,位置随机),干扰圆
        for(var j = 0; j < roundNum(5, 10); j++) {
            context.beginPath();
            context.fillStyle = color;
            context.arc(roundNum(0, 100), roundNum(0, 40), roundNum(0, 5), Math.PI * 2 / (roundNum(1, 360)), Math.PI * 2 / (roundNum(1, 360)));
            context.fill();
        }
        
    </script>

</html>

结果如图:

canvas基础之图形验证码的示例

至于要拿来咋用,就看大家高兴了。想怎么整这么整。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3 选择器 伪类选择器介绍
Jan 21 HTML / CSS
纯css3实现鼠标经过图片显示描述的动画效果
Sep 01 HTML / CSS
一款纯css3实现的漂亮的404页面的实例教程
Nov 27 HTML / CSS
纯css3实现图片翻牌特效
Mar 10 HTML / CSS
CSS3实现时间轴特效
Nov 02 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
Mar 15 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
May 20 HTML / CSS
HTML5实现锚点时请使用id取代name
Sep 06 HTML / CSS
使用placeholder属性设置input文本框的提示信息
Feb 19 HTML / CSS
AmazeUI 加载进度条的实现示例
Aug 20 HTML / CSS
amazeui页面分析之登录页面的示例代码
Aug 25 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
Jan 03 #HTML / CSS
html5 canvas绘制放射性渐变色效果
Jan 04 #HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 #HTML / CSS
详解Html5原生拖拽操作
Jan 12 #HTML / CSS
使用Html5、CSS实现文字阴影效果
Jan 17 #HTML / CSS
canvas烟花特效锦集
Jan 17 #HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 #HTML / CSS
You might like
php上传文件的增强函数
2010/07/21 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
2016/10/29 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
numpy基础教程之np.linalg
2019/02/12 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
通过python检测字符串的字母
2020/02/18 Python
python序列类型种类详解
2020/02/26 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
Android笔试题总结
2014/11/29 面试题
铭立家具面试题
2012/12/06 面试题
多媒体专业自我鉴定
2014/02/28 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
2014年统战工作总结
2014/12/09 职场文书
补充协议书
2015/01/28 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
企业财务管理制度范本
2015/08/04 职场文书
赡养老人协议书范本
2015/08/06 职场文书
《法国号》教学反思
2016/02/22 职场文书