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中的@keyframes关键帧动画的选择器绑定
Jun 13 HTML / CSS
html5文本内容_动力节点Java学院整理
Jul 11 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
Feb 07 HTML / CSS
HTML5 video 视频标签使用介绍
Feb 03 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
Apr 10 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
Aug 17 HTML / CSS
移动端html5模拟长按事件的实现方法
Sep 30 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
Dec 10 HTML / CSS
h5网页水印SDK的实现代码示例
Feb 19 HTML / CSS
纯CSS打字动画的实现示例
Aug 05 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 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
php 文件上传类代码
2011/08/06 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php的curl封装类用法实例
2014/11/07 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
JavaScript中的其他对象
2008/01/16 Javascript
常用的javascript function代码
2008/05/23 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
讲解Python中fileno()方法的使用
2015/05/24 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python在文本开头插入一行的实例
2018/05/02 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
python安装gdal的两种方法
2019/10/29 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
高三毕业典礼主持词
2014/03/27 职场文书
人事任命书怎么写
2014/06/05 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
部门2015年度工作总结
2015/04/29 职场文书
原告代理词范文
2015/05/25 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL