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教程(5):网页背景图片
Apr 02 HTML / CSS
浅析css3中matrix函数的使用
Jun 06 HTML / CSS
CSS3制作酷炫的三维相册效果
Jul 01 HTML / CSS
canvas粒子动画背景的实现示例
Sep 03 HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
Aug 22 HTML / CSS
HTML5学习心得总结(推荐)
Jul 08 HTML / CSS
解决HTML5中滚动到底部的事件问题
Aug 22 HTML / CSS
html svg生成环形进度条的实现方法
Sep 23 HTML / CSS
canvas版人体时钟的实现示例
Jan 29 HTML / CSS
关于html选择框创建占位符的问题
Jun 09 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 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数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
php后门URL的防范
2013/11/12 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
PHP 8新特性简介
2020/08/18 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
python使用matplotlib绘制柱状图教程
2017/02/08 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
keras slice layer 层实现方式
2020/06/11 Python
python 实现音频叠加的示例
2020/10/29 Python
Python3读写ini配置文件的示例
2020/11/06 Python
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
幼儿园教师个人反思
2014/01/30 职场文书
大学生秋游活动方案
2014/02/17 职场文书
四群教育工作实施方案
2014/03/26 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
新店开张活动方案
2014/08/24 职场文书
2014年司机工作总结
2014/11/21 职场文书
小学班主任自我评价
2015/03/11 职场文书