作家
登录

建立良好体验度的Web注册系统ajax

作者: 来源:www.28hudong.com 2013-03-30 03:23:12 阅读 我要评论

*项目名称:具有良好体验度的Web注册系统 *作者:草履虫 *联系:caolvchong@gmail.com *时间:2007-6-29 *起因和版权说明: 1.蓝色理想上有位会员发布了个类似的系统,提问说验证码不支持firefox的刷新,于是萌生念头做一个.本系统外观(按钮取色等)借鉴了该系统,但细节实现原理并不相同(该文地址:http://bbs.blueidea.com/thread-2761325-1-4.html). 2.另外,自己做的这个注册系统中利用了网络上的无组件验证码(作者sipo) 3.至于密码强度的算法借鉴了蓝色理想的一篇文章(http://www.blueidea.com/tech/web/2006/4324.asp),但该算法并不十分理想,如果有更好算法的朋友不妨交流一下 *特点和知识点: 1.AJAX验证用户名和验证码,同时异步进行用户名注册(都属于AJAX的很基础部分) 2.支持验证码刷新(包括firefox平台下) 3.密码,邮箱,用户名等即时检测(利用javascript DOM) 4.HTML通过W3C Strict验证,CSS也通过W3C CSS验证(其实这个有点多余,并不完全必要) *开发平台:Windows2003 IIS6.0 Access数据库 *工具:DreamWeaver(写ASP),Aptana(写Javascript,HTML和CSS),Emeditor(写这篇文章),Access2003(数据库) *测试平台:Firefox2.0,Opera9.21,IE6.0,IE7.0 *演示地址:http://finish.3322.org/reg/reg.htm(短期有效,在本机上,可能访问不顺畅) *原文地址:http://cceer.xmu.edu.cn/blog/view.asp?id=52 *补充: 如果你使用这个注册系统,请务必注意下列问题: 本系统没有对密码进行加密,如果需要,可以搜索MD5加密 本系统没有进行防注入设置,如果需要,可以搜索SQL防注入 限于本人水平上的限制,错误和不足在所难免,如果你有问题或者建议,请联系我,感谢! *这里是效果图 限于文章长度的限制,只帖出两个js文件和一个显示注册页面,至于后台处理页面以及css文件等,请在压缩包中查看 1.reg.htm(由于BLOG会过滤,分开三个部分写) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <title>草履虫---简易AJAX注册页面</title> <link href="reg.css" type="text/css" rel="stylesheet" /> <script src="detect.js" type="text/javascript"></script> <script src="ajax.js" type="text/javascript"></script> </head> <body onload="check_data();"> view plaincopy to clipboardprint? <UL> <LI id=title>草履虫---Web注册系统 <LI class=underline> <LABEL>注册用户名: <INPUT onblur=check_id(this.value); maxLength=16> </LABEL> <SPAN>支持汉字,单词,数字,敏感字符屏蔽</SPAN> <LI> <LABEL>注册密码: <INPUT onblur=check_password(); type=password value=""> </LABEL> <SPAN>密码在6-16位之间,敏感字符屏蔽</SPAN> <LI class=underline> <LABEL>重复密码: <INPUT onblur=check_pw(); type=password maxLength=16 value=""> </LABEL> <SPAN></SPAN> <LI class=underline> <LABEL>邮箱: <INPUT onblur=check_email(this.value)> </LABEL> <SPAN>email是联系重要手段</SPAN> <LI class=underline>验证码: <INPUT onblur=checkcode(this.value); maxLength=5> <LABEL> <IMG id=src onclick="this.src=this.src+'?'+Math.random();" height=18 alt=看不清楚?请点击刷新 src="getcode.asp"> <SPAN>看不清楚?请点击验证码刷新</SPAN> </LABEL> <LI class=underline> 相关协议: <LABEL onclick=accept_info();><INPUT type=radio name=info>接受</LABEL> <LABEL onclick=refuse_info();><INPUT type=radio name=info>不接受</LABEL> <INPUT class=button type=button value=阅读协议> <LI class=underline> <INPUT class="button setleft" onclick="sendinfo($('input')[0].value,$('input')[1].value,$('input')[3].value)" type=submit value=注册> <INPUT class=button onclick=reset_info() type=reset value=重置> <SPAN></SPAN> <LI class=copyright>作者:草履虫 <LI class=copyright>时间:2007-6-28 <LI class=copyright>联系:caolvchong@gmail.com <LI class=copyright>Blog---Web2.0之路:<A href="http://cceer.xmu.edu.cn/blog/">http://cceer.xmu.edu.cn/blog/</A> /LI></UL> 草履虫---Web注册系统 注册用户名: 支持汉字,单词,数字,敏感字符屏蔽 注册密码: 密码在6-16位之间,敏感字符屏蔽 重复密码: 邮箱: email是联系重要手段 验证码: 看不清楚?请点击验证码刷新 相关协议: 接受 不接受 作者:草履虫 时间:2007-6-28 联系:caolvchong@gmail.com Blog---Web2.0之路:http://cceer.xmu.edu.cn/blog/ </body> </html> 2.detect.js view plaincopy to clipboardprint? var flag=[0,0,0,0,0,0]; var $=function(tagName){ return document.getElementsByTagName(tagName); } //----------接受协议 function accept_info(){ flag[0]=1; check_data(); } //----------拒绝协议 function refuse_info(){ flag[0]=0; check_data(); } //----------重置 function reset_info(){ var info=["支持汉字,单词,数字,敏感字符屏蔽","密码在6-16位之间,敏感字符屏蔽","","email是联系重要手段","看不清楚?请点击验证码刷新"] for(var i=0;i<$("span").length;i++){ $("span")[i].innerHTML=info[i]; flag[i]=0; } for(var i=0;i<$("input").length-3;i++){ $("input")[i].value=""; } check_data(); } //----------邮箱检测 function check_email(email){ var reEmail=/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/; var b_email=reEmail.test(email); if(b_email){ $("span")[3].innerHTML="<IMG src="yesok.gif"> 邮箱可用"; flag[1]=1; check_data(); } else{ $("span")[3].innerHTML="<IMG src="yesno.gif"> 邮箱错误"; flag[1]=0; check_data(); } } //----------密码检测 function check_password(obj){ var pwd=$("input")[1].value; var reChinese=/[u0391-uFFE5]+/; var b_chinese=reChinese.test(pwd); var reSpace=/s+/; var b_space=reSpace.test(pwd); //-------长度测试 if(pwd.length<6){ $("span")[1].innerHTML="<IMG src="yesno.gif"> 密码长度不能小于6"; flag[2]=0; check_data(); } //-------合法性检测:不能包含汉字 else if(b_chinese){ $("span")[1].innerHTML="<IMG src="yesno.gif"> 密码不能包含中文"; flag[2]=0; check_data(); } //-------合法性检测:不能包含空格 else if(b_space){ $("span")[1].innerHTML="<IMG src="yesno.gif"> 密码不能包含空格"; flag[2]=0; check_data(); } //-------合法时显示密码强度 else{ //定义对应的消息提示 var num=getResult(pwd); var msg=new Array("<IMG src="bad.gif"> 密码强度差","<IMG src="comm.gif"> 密码强度一般","<IMG src="good.gif"> 密码强度强壮"); $("span")[1].innerHTML=msg[num]; if($("input")[2].value!=""){ check_pw(); } return flag[2]=1; check_data(); } } //定义检测函数,返回0/1/2分别代表差/一般/强 function getResult(s){ var ls =-1; if (s.match(/[a-z]/ig)){ ls++; } if (s.match(/[0-9]/ig)){ ls++; } if (s.match(/(.[^a-z0-9])/ig)){ ls++; } return ls; } //---------密码一致性检测 function check_pw(){ var pwd=$("input")[1].value.toString(); var check_pwd=$("input")[2].value.toString(); if(flag[2]==1){ if(pwd==check_pwd){ $("span")[2].innerHTML="<IMG src="yesok.gif"> 密码可以使用"; flag[3]=1; check_data(); } else{ $("span")[2].innerHTML="<IMG src="yesno.gif"> 两次密码不相同"; flag[3]=0; check_data(); } } } //---------用户名合法性检测 function check_id(id_name){//只能字母和数字,是否相同用AJAX判断 var reId=/^[wu0391-uFFE5]+$/; var b_id=reId.test(id_name); if(!b_id){ $("span")[0].innerHTML="<IMG src="yesno.gif"> ID命名非法"; flag[4]=0; check_data(); } else{//合法用户名用ajax的checkid()检测是否被注册过 checkid(id_name); } } //---------检查数据,使提交按钮是否生效 function check_data(){ if(flag[0]==1 && flag[1]==1 && flag[2]==1 && flag[3]==1 && flag[4]==1 && flag[5]==1){ $("input")[8].disabled=false; } else{ $("input")[8].disabled=true; } } //-------------------------------------------------------------------- var flag=[0,0,0,0,0,0]; var $=function(tagName){ return document.getElementsByTagName(tagName); } //----------接受协议 function accept_info(){ flag[0]=1; check_data(); } //----------拒绝协议 function refuse_info(){ flag[0]=0; check_data(); } //----------重置 function reset_info(){ var info=["支持汉字,单词,数字,敏感字符屏蔽","密码在6-16位之间,敏感字符屏蔽","","email是联系重要手段","看不清楚?请点击验证码刷新"] for(var i=0;i<$("span").length;i++){ $("span")[i].innerHTML=info[i]; flag[i]=0; } for(var i=0;i<$("input").length-3;i++){ $("input")[i].value=""; } check_data(); } //----------邮箱检测 function check_email(email){ var reEmail=/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/; var b_email=reEmail.test(email); if(b_email){ $("span")[3].innerHTML=" 邮箱可用"; flag[1]=1; check_data(); } else{ $("span")[3].innerHTML=" 邮箱错误"; flag[1]=0; check_data(); } } //----------密码检测 function check_password(obj){ var pwd=$("input")[1].value; var reChinese=/[u0391-uFFE5]+/; var b_chinese=reChinese.test(pwd); var reSpace=/s+/; var b_space=reSpace.test(pwd); //-------长度测试 if(pwd.length<6){ $("span")[1].innerHTML=" 密码长度不能小于6"; flag[2]=0; check_data(); } //-------合法性检测:不能包含汉字 else if(b_chinese){ $("span")[1].innerHTML=" 密码不能包含中文"; flag[2]=0; check_data(); } //-------合法性检测:不能包含空格 else if(b_space){ $("span")[1].innerHTML=" 密码不能包含空格"; flag[2]=0; check_data(); } //-------合法时显示密码强度 else{ //定义对应的消息提示 var num=getResult(pwd); var msg=new Array(" 密码强度差"," 密码强度一般"," 密码强度强壮"); $("span")[1].innerHTML=msg[num]; if($("input")[2].value!=""){ check_pw(); } return flag[2]=1; check_data(); } } //定义检测函数,返回0/1/2分别代表差/一般/强 function getResult(s){ var ls =-1; if (s.match(/[a-z]/ig)){ ls++; } if (s.match(/[0-9]/ig)){ ls++; } if (s.match(/(.[^a-z0-9])/ig)){ ls++; } return ls; } //---------密码一致性检测 function check_pw(){ var pwd=$("input")[1].value.toString(); var check_pwd=$("input")[2].value.toString(); if(flag[2]==1){ if(pwd==check_pwd){ $("span")[2].innerHTML=" 密码可以使用"; flag[3]=1; check_data(); } else{ $("span")[2].innerHTML=" 两次密码不相同"; flag[3]=0; check_data(); } } } //---------用户名合法性检测 function check_id(id_name){//只能字母和数字,是否相同用AJAX判断 var reId=/^[wu0391-uFFE5]+$/; var b_id=reId.test(id_name); if(!b_id){ $("span")[0].innerHTML=" ID命名非法"; flag[4]=0; check_data(); } else{//合法用户名用ajax的checkid()检测是否被注册过 checkid(id_name); } } //---------检查数据,使提交按钮是否生效 function check_data(){ if(flag[0]==1 && flag[1]==1 && flag[2]==1 && flag[3]==1 && flag[4]==1 && flag[5]==1){ $("input")[8].disabled=false; } else{ $("input")[8].disabled=true; } } //-------------------------------------------------------------------- 3.ajax.js view plaincopy to clipboardprint? function checkcode(regcode){ var xmlhttp; try{ xmlhttp=new XMLHttpRequest(); } catch(e){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){ if (xmlhttp.status==200){ var data=xmlhttp.responseText; code_result(data); } else{ $("span")[4].innerHTML="验证码校验失败,请联系管理员"; } } else{ $("span")[4].innerHTML="正在进行验证码校验..."; } } xmlhttp.open("post", "check_code.asp", true); xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlhttp.send("regcode="+escape(regcode)); } function code_result(data){ var resultbox=$("span")[4]; if(data==1){ resultbox.innerHTML='<IMG src="yesok.gif"> 验证码正确'; flag[5]=1; check_data(); } else{ resultbox.innerHTML='<IMG src="yesno.gif"> 验证码错误'; flag[5]=0; check_data(); } } //-------------------------------------------------------------------- function checkid(regid){ var xmlhttp; try{ xmlhttp=new XMLHttpRequest(); } catch(e){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){ if (xmlhttp.status==200){ var data=xmlhttp.responseText; id_result(data); } else{ $("span")[0].innerHTML="用户名检测失败,请联系管理员"; } } else{ $("span")[0].innerHTML="正在进行用户名校验..."; } } xmlhttp.open("post", "check_id.asp", true); xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlhttp.send("regid="+escape(regid)); } function id_result(data){ var resultbox=$("span")[0]; if(data==1){ resultbox.innerHTML='<IMG src="yesok.gif"> 用户名可用'; flag[4]=1; check_data(); } else{ resultbox.innerHTML='<IMG src="yesno.gif"> 该用户名已经被注册'; flag[4]=0; check_data(); } } //-------------------------------------------------------------------- function sendinfo(regname,pwd,email){ var xmlhttp; try{ xmlhttp=new XMLHttpRequest(); } catch(e){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){ if (xmlhttp.status==200){ var data=xmlhttp.responseText; reg_result(data); } else{ $("span")[5].innerHTML="注册失败,请联系管理员"; } } else{ $("span")[5].innerHTML="正在进行用户名注册..."; } } xmlhttp.open("post", "reg.asp", true); xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlhttp.send("regname="+escape(regname)+"&pwd="+escape(pwd)+"&email="+escape(email)); } function reg_result(data){ if(data==1){ $("span")[5].innerHTML='<A href="http://cceer.xmu.edu.cn/blog/" target=_blank>'+$("input")[0].value+",您好.请点击这里登陆</A>"; } else{ $("span")[5].innerHTML="注册失败,请联系管理员"; } } *这里是所有文件的打包下载(包括所有文件,图片,数据库等,解压后请在IIS下测试) 良好体验度的注册系统.rar

  推荐阅读

  一个JS翻页效果

<IFRAME border=0 align=center marginWidth=0 marginHeight=0 src="1.htm" frameBorder=no width=200 scrolling=no height=200 style="border: 1px solid #CCCCCC" id="pic"></IFRAME> <a href="javascript:Page(>>>详细阅读


本文标题:建立良好体验度的Web注册系统ajax

地址:http://www.17bianji.com/kaifa2/JS/30277.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)