js生成的验证码的实现与技术分析


Posted in Javascript onSeptember 17, 2014

分享给大家一段js生成验证码并验证的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JS生成验证码</title>
<style type="text/css">
.code {
background-image: url(code.jpg);
font-family: Arial;
font-style: italic;
color: Red;
border: 0;
padding: 2px 3px;
letter-spacing: 3px;
font-weight: bolder;
}
.unchanged {
border: 0;
}
</style>
<script language="javascript" type="text/javascript"> 
var code; //在全局 定义验证码  
function createCode() {
  code = "";
  var codeLength = 6;//验证码的长度  
  var checkCode = document.getElementById("checkCode");
  var selectChar = 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');//所有候选组成验证码的字符,当然也可以用中文的  
 
  for (var i = 0; i < codeLength; i++) {
    var charIndex = Math.floor(Math.random() * 36);
    code += selectChar[charIndex];
  }
  //alert(code);
  if (checkCode) {
    checkCode.className = "code";
    checkCode.value = code;
  }
}
 
function validate() {
  var inputCode = document.getElementById("input1").value;
  if (inputCode.length <= 0) {
    alert("请输入验证码!");
  } else if (inputCode != code) {
    alert("验证码输入错误!");
  createCode();//刷新验证码  
  } else {
  alert("^-^ OK");
  }
}
</script>
</head>
<body onload="createCode()">
<form action="#">
  <input type="text" id="input1" /> <input type="text" onclick="createCode()" readonly="readonly" id="checkCode" class="unchanged" style="width: 80px" /><br />
  <input id="Button1" onclick="validate();" type="button" value="确定" />
</form>
</body>
</html>

众所周知,js是客户端的,那么把验证都做在客户端有意义吗?还是必须从服务器生成的验证码安全啊?前端生成的验证码安全吗?

验证码是动态的,但要由客户端识别,并返回正确数值才能正常验证。这是一个流程问题,如果js的,那就是在客户端处验证,基本等于没有一样!!!最好是服务器生成,客户端验证,服务器确认,正常浏览。这样一个流程就万无一失

所以,本文仅仅是技术探讨而已,千万别用在实际生产项目中

Javascript 相关文章推荐
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
JS面向对象编程浅析
Aug 28 Javascript
javascript浏览器兼容教程之事件处理
Jun 09 Javascript
javascript转换静态图片,增加粒子动画效果
May 28 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
JS实现微信摇一摇原理解析
Jul 22 Javascript
微信小程序实现留言板
Oct 31 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 Javascript
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 #Javascript
node.js中使用q.js实现api的promise化
Sep 17 #Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 #Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 #Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 #Javascript
JavaScript的各种常见函数定义方法
Sep 16 #Javascript
JavaScript中合并数组的N种方法
Sep 16 #Javascript
You might like
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
php 数组元素快速去重
2017/05/05 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python写入已存在的excel数据实例
2018/05/03 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
标准毕业生自荐信范文
2013/11/04 职场文书
职工运动会邀请函
2014/01/19 职场文书
校园活动宣传方案
2014/03/28 职场文书
反邪教警示教育方案
2014/05/13 职场文书
四风问题查摆材料
2014/08/25 职场文书
放假通知
2015/04/14 职场文书
离婚被告答辩状
2015/05/22 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android