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实现的图片放大镜特效效果非常不错
Sep 02 HTML / CSS
用CSS3来实现社交分享按钮
Nov 11 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
关于box-sizing的全面理解
Jul 28 HTML / CSS
css3 边框、背景、文本效果的实现代码
Mar 21 HTML / CSS
css3 实现元素弧线运动的示例代码
Apr 24 HTML / CSS
CSS3 transition 实现通知消息轮播条
Oct 14 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
Dec 07 HTML / CSS
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
Jan 30 HTML / CSS
HTML5 SEO优化的一些建议
Aug 27 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
Oct 16 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
JS动态调用方法名示例介绍
2013/12/18 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python中将字典转换成其json字符串
2014/07/16 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
python如何变换环境
2020/07/21 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
pandas 数据类型转换的实现
2020/12/29 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
网上蛋糕店创业计划书
2014/01/24 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
生物技术专业求职信
2014/06/10 职场文书
社保委托书怎么写
2014/08/02 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
CAD实训总结范文
2015/08/03 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Python保存并浏览用户的历史记录
2022/04/29 Python