HTML——验证码
一、HTML5的验证码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>验证码</title> <style type="text/css"> #canvas{ cursor:pointer; } </style> </head> <body> <canvas id="canvas" width="150px" height="50px"></canvas> <script> //生成随机数 function randomNum(min,max){ return Math.floor(Math.random()*(max-min)+min); } //生成随机颜色RGB分量 function randomColor(min,max){ var _r = randomNum(min,max); var _g = randomNum(min,max); var _b = randomNum(min,max); return "rgb("+_r+","+_g+","+_b+")"; } //先阻止画布默认点击发生的行为再执行drawPic()方法 document.getElementById("canvas").onclick = function(e){ e.preventDefault(); drawPic(); }; function drawPic(){ //获取到元素canvas var $canvas = document.getElementById("canvas"); var _str = "0123456789";//设置随机数库 var _picTxt = "";//随机数 var _num = 4;//4个随机数字 var _width = $canvas.width; var _height = $canvas.height; var ctx = $canvas.getContext("2d");//获取 context 对象 ctx.textBaseline = "bottom";//文字上下对齐方式--底部对齐 ctx.fillStyle = randomColor(180,240);//填充画布颜色 ctx.fillRect(0,0,_width,_height);//填充矩形--画画 for(var i=0; i<_num; i++){ var x = (_width-10)/_num*i+10; var y = randomNum(_height/2,_height); var deg = randomNum(-45,45); var txt = _str[randomNum(0,_str.length)]; _picTxt += txt;//获取一个随机数 ctx.fillStyle = randomColor(10,100);//填充随机颜色 ctx.font = randomNum(16,40)+"px SimHei";//设置随机数大小,字体为SimHei ctx.translate(x,y);//将当前xy坐标作为原始坐标 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<_num; i++){ //定义笔触颜色 ctx.strokeStyle = randomColor(90,180); ctx.beginPath(); //随机划线--4条路径 ctx.moveTo(randomNum(0,_width), randomNum(0,_height)); ctx.lineTo(randomNum(0,_width), randomNum(0,_height)); ctx.stroke(); } for(var i=0; i<_num*10; i++){ ctx.fillStyle = randomColor(0,255); ctx.beginPath(); //随机画原,填充颜色 ctx.arc(randomNum(0,_width),randomNum(0,_height), 1, 0, 2*Math.PI); ctx.fill(); } return _picTxt;//返回随机数字符串 } drawPic(); </script> </body> </html>
二、JS的验证码
//页面加载时,生成随机验证码 window.onload=function(){ createCode(4); } //生成验证码的方法 function createCode(length) { var code = ""; var codeLength = parseInt(length); //验证码的长度 var checkCode = document.getElementById("checkCode"); ////所有候选组成验证码的字符,当然也可以用中文的 var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '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'); //循环组成验证码的字符串 for (var i = 0; i < codeLength; i++) { //获取随机验证码下标 var charNum = Math.floor(Math.random() * 62); //组合成指定字符验证码 code += codeChars[charNum]; } if (checkCode) { //为验证码区域添加样式名 checkCode.className = "code"; //将生成验证码赋值到显示区 checkCode.innerHTML = code; } } //检查验证码是否正确 function validateCode() { //获取显示区生成的验证码 var checkCode = document.getElementById("checkCode").innerHTML; //获取输入的验证码 var inputCode = document.getElementById("inputCode").value; //console.log(checkCode); //console.log(inputCode); if (inputCode.length <= 0) { alert("请输入验证码!"); } else if (inputCode.toUpperCase() != checkCode.toUpperCase()) { alert("验证码输入有误!"); createCode(4); } else { alert("验证码正确!"); } }