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 相关文章推荐
CSS Grid布局教程之网格单元格布局
Dec 30 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
Oct 16 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
Jan 12 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
Jul 13 HTML / CSS
html5教程画矩形代码分享
Dec 04 HTML / CSS
实例讲解HTML5的meta标签的一些应用
Dec 08 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
Aug 09 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
Mar 04 HTML / CSS
CSS基础详解
Oct 16 HTML / CSS
POST提交数据常见的四种方式
Jan 18 HTML / CSS
CSS中实现动画效果-附案例
Feb 28 HTML / CSS
CSS link与@import的区别和用法解析
May 07 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
php google或baidu分页代码
2009/11/26 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
图片按比例缩放函数
2006/06/26 Javascript
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
python3.5绘制随机漫步图
2018/08/27 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python小项目之五子棋游戏
2019/12/26 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
我的梦想演讲稿
2014/04/30 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
婚礼伴郎致辞
2015/07/28 职场文书