当前位置: 首页 > news >正文

专注移动网站建设东海县城乡建设局网站

专注移动网站建设,东海县城乡建设局网站,十大搜索引擎网站,html家乡网页完整代码图形验证码起什么作用: 可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。 验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。不少…

图形验证码起什么作用:

可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。

验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰。

例如随机画数条直线,画一些点(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

怎么实现图形验证码

原理:

1. 创建canvas元素,设置宽高等参数

2. 在canvas上绘制复杂的背景和前景噪点干扰线,增加识别难度

3. 随机生成数字/字母,通过旋转、移动、变形来绘制文本

4. 绘制完成后,把生成的验证码保存在实例的code属性中

5. 用户输入验证码与code属性中的值进行对比验证

6. 验证失败则重新生成验证码图形和code值

具体来看,主要步骤是:

  •  初始化时设置canvas参数,定义文本字符数组
  •  refresh方法用来生成验证码图形   - 绘制背景色和矩形框
  •                                                        - 随机生成文字,设置样式并旋转绘制
  •                                                        - 绘制干扰线和噪点
  • validate方法用来比对用户输入和验证码的值
  • 调用refresh重新生成验证码图形captcha的安全性就在于背景干扰线、噪点以及文字扭曲变形,使机器无法准确识别文字。同时验证码的值保存在内存中,不存入数据库,验证后即被清除,保证了每次都是新的验证码。这就是一个典型的前端图形验证码实现的基本流程和原理。可以根据需要对验证码样式、文字、长度等进行自定义。

代码:

html 

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>图形验证码</title></head><style>#app{margin-top: 160px;width: 500px;height: 300px;display: flex;flex-direction: column;justify-content: center;align-items: center;border: 2px solid pink;}#my_body{width: 200px;display: flex;align-items: center;justify-content: space-between;}#code_input{width: 120px;height: 20px;line-height: 20px;}#code_input:focus {outline: 0;}#my_button{width: 50px;height: 24px;}#v_container{margin-bottom: 50px;width: 200px;height: 50px;}</style><body><div id="app"><div id="v_container" ></div><div id="my_body"><input type="text" id="code_input" value="" placeholder="请输入验证码"/><button id="my_button">验证</button></div></div></body><script src="gVerify.js"></script><script>var verifyCode = new GVerify("v_container");document.getElementById("my_button").onclick = function(){var res = verifyCode.validate(document.getElementById("code_input").value);if(res){alert("验证正确");}else{alert("验证码错误");}}</script>
</html>

 js


!(function(window, document) {function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数this.options = { //默认options参数值id: "", //容器IdcanvasId: "verifyCanvas", //canvas的IDwidth: "100", //默认canvas宽度height: "30", //默认canvas高度type: "blend", //图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母code: ""}if(Object.prototype.toString.call(options) == "[object Object]"){//判断传入参数类型for(var i in options) { //根据传入的参数,修改默认参数值this.options[i] = options[i];}}else{this.options.id = options;}this.options.numArr = "0,1,2,3,4,5,6,7,8,9".split(",");this.options.letterArr = getAllLetter();this._init();this.refresh();}GVerify.prototype = {/**版本号**/version: '1.0.0',/**初始化方法**/_init: function() {var con = document.getElementById(this.options.id);var canvas = document.createElement("canvas");this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100";this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30";canvas.id = this.options.canvasId;canvas.width = this.options.width;canvas.height = this.options.height;canvas.style.cursor = "pointer";canvas.innerHTML = "您的浏览器版本不支持canvas";con.appendChild(canvas);var parent = this;canvas.onclick = function(){parent.refresh();}},/**生成验证码**/refresh: function() {this.options.code = "";var canvas = document.getElementById(this.options.canvasId);if(canvas.getContext) {var ctx = canvas.getContext('2d');}else{return;}ctx.textBaseline = "middle";ctx.fillStyle = randomColor(180, 240);ctx.fillRect(0, 0, this.options.width, this.options.height);if(this.options.type == "blend") { //判断验证码类型var txtArr = this.options.numArr.concat(this.options.letterArr);} else if(this.options.type == "number") {var txtArr = this.options.numArr;} else {var txtArr = this.options.letterArr;}for(var i = 1; i <= 4; i++) {var txt = txtArr[randomNum(0, txtArr.length)];this.options.code += txt;ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; //随机生成字体大小ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色		ctx.shadowOffsetX = randomNum(-3, 3);ctx.shadowOffsetY = randomNum(-3, 3);ctx.shadowBlur = randomNum(-3, 3);ctx.shadowColor = "rgba(0, 0, 0, 0.3)";var x = this.options.width / 5 * i;var y = this.options.height / 2;var deg = randomNum(-30, 30);/**设置旋转角度和坐标原点**/ctx.translate(x, y);ctx.rotate(deg * Math.PI / 180);ctx.fillText(txt, 0, 0);/**恢复旋转角度和坐标原点**/ctx.rotate(-deg * Math.PI / 180);ctx.translate(-x, -y);}/**绘制干扰线**/for(var i = 0; i < 4; i++) {ctx.strokeStyle = randomColor(40, 180);ctx.beginPath();ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height));ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height));ctx.stroke();}/**绘制干扰点**/for(var i = 0; i < this.options.width/4; i++) {ctx.fillStyle = randomColor(0, 255);ctx.beginPath();ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI);ctx.fill();}},/**验证验证码**/validate: function(code){var code = code.toLowerCase();var v_code = this.options.code.toLowerCase();console.log(v_code);if(code == v_code){return true;}else{this.refresh();return false;}}}/**生成字母数组**/function getAllLetter() {var letterStr = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";return letterStr.split(",");}/**生成一个随机数**/function randomNum(min, max) {return Math.floor(Math.random() * (max - min) + min);}/**生成一个随机色**/function randomColor(min, max) {var r = randomNum(min, max);var g = randomNum(min, max);var b = randomNum(min, max);return "rgb(" + r + "," + g + "," + b + ")";}window.GVerify = GVerify;
})(window, document);

效果:

     

http://www.yayakq.cn/news/511172/

相关文章:

  • 北京网站优化和推广网站设计的一般流程
  • 主机屋 建网站教程国外财经网站是怎么做的
  • 天津商城网站建设重庆网络推广引流公司
  • 为什么做这个网站反馈问题c 做游戏的网站教学
  • 优秀个人网站设计模板网站建设需要多少钱费用
  • 聊城网站建设哪个好些开发一个交易网站多少钱
  • 张店免费做网站wordpress成品图
  • 网站怎么做才查看网站备案号
  • 微商网站如何做设计企业品牌网站
  • 设计投稿网站企业网站 案例
  • 常州自助做网站北京海淀区的科技有限公司
  • 做冒菜店网站做外贸开店用哪个网站
  • 福田网站改版广州工程
  • 网站统计哪个好用网页制作和网页制作设计
  • 大学生兼职网站的融资方案服装电子商务网站建设与实现
  • 湛江市网站建设达尔罕茂明安网站建设
  • asp.net做的网站模板下载电商app制作平台
  • 站长工具seo查询5g5g深圳做微商网站设计
  • 网站能不能一边用 一边备案旅游网站设计代码html
  • 景点网站开发积极意义安装未连接到wordpress
  • 深圳网站设计 三把火科技网站代备
  • 做网站用什么字体比较好做个h5页面要多少钱
  • 怎么增加网站首页权重网站建设流
  • 前端特效网站安徽建设厅网站打不开
  • 手机网站cms有哪些福田祥菱v2双排后双轮报价
  • 自适应网站系统吗wordpress function.php
  • vps网站如何设置缓存大连三川建设集团
  • 大连网站建设仟亿科技广州电商设计公司
  • 做网站首页看不到图片国家建筑规范标准
  • 昆明百度智能建站在线设计装修户型图