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新属性
Nov 11 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
May 07 HTML / CSS
css3实现文字扫光渐变动画效果的示例
Nov 07 HTML / CSS
CSS3使用transition属性实现过渡效果
Apr 18 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
Apr 28 HTML / CSS
HTML5中的新元素介绍
Oct 17 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
Mar 21 HTML / CSS
canvas之自定义头像功能实现代码示例
Sep 29 HTML / CSS
html5用video标签流式加载的实现
May 20 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
Nov 19 HTML / CSS
CSS代码检查工具stylelint的使用方法详解
Mar 27 HTML / CSS
详解CSS不定宽溢出文本适配滚动
May 24 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 反射机制实现动态代理的代码
2008/10/22 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP中的表达式简述
2016/05/29 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
从vue源码看props的用法
2019/01/09 Javascript
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
Python 对象中的数据类型
2017/05/13 Python
用Python实现随机森林算法的示例
2017/08/24 Python
对Python中range()函数和list的比较
2018/04/19 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python列表推导式操作解析
2019/11/26 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
浅析matlab中imadjust函数
2020/02/27 Python
客服服务心得体会
2013/12/30 职场文书
语文教学随笔感言
2014/02/18 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
授权委托书格式模板
2014/04/03 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
详解NodeJS模块化
2021/06/15 NodeJs