建立良好体验度的Web注册系统ajax
建立良好体验度的Web注册系统ajax
发布时间:2016-12-30 来源:查字典编辑
摘要:*项目名称:具有良好体验度的Web注册系统*作者:草履虫*联系:caolvchong@gmail.com*时间:2007-6-29*起因和版...

*项目名称:具有良好体验度的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.密码,邮箱,用户名等即时检测(利用javascriptDOM)

4.HTML通过W3CStrict验证,CSS也通过W3CCSS验证(其实这个有点多余,并不完全必要)

*开发平台:Windows2003IIS6.0Access数据库

*工具: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会过滤,分开三个部分写)

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"lang="gb2312">

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=GB2312"/>

<title>草履虫---简易AJAX注册页面</title>

<linkhref="reg.css"type="text/css"rel="stylesheet"/>

<scriptsrc="detect.js"type="text/javascript"></script>

<scriptsrc="ajax.js"type="text/javascript"></script>

</head>

<bodyonload="check_data();">

viewplaincopytoclipboardprint?

<UL>

<LIid=title>草履虫---Web注册系统

<LIclass=underline>

<LABEL>注册用户名:

<INPUTonblur=check_id(this.value);maxLength=16>

</LABEL>

<SPAN>支持汉字,单词,数字,敏感字符屏蔽</SPAN>

<LI>

<LABEL>注册密码:

<INPUTonblur=check_password();type=passwordvalue="">

</LABEL>

<SPAN>密码在6-16位之间,敏感字符屏蔽</SPAN>

<LIclass=underline>

<LABEL>重复密码:

<INPUTonblur=check_pw();type=passwordmaxLength=16value="">

</LABEL>

<SPAN></SPAN>

<LIclass=underline>

<LABEL>邮箱:

<INPUTonblur=check_email(this.value)>

</LABEL>

<SPAN>email是联系重要手段</SPAN>

<LIclass=underline>验证码:

<INPUTonblur=checkcode(this.value);maxLength=5>

<LABEL>

<IMGid=srconclick="this.src=this.src+'?'+Math.random();"height=18alt=看不清楚?请点击刷新src="getcode.asp">

<SPAN>看不清楚?请点击验证码刷新</SPAN>

</LABEL>

<LIclass=underline>

相关协议:

<LABELonclick=accept_info();><INPUTtype=radioname=info>接受</LABEL>

<LABELonclick=refuse_info();><INPUTtype=radioname=info>不接受</LABEL>

<INPUTclass=buttontype=buttonvalue=阅读协议>

<LIclass=underline>

<INPUTclass="buttonsetleft"onclick="sendinfo($('input')[0].value,$('input')[1].value,$('input')[3].value)"type=submitvalue=注册>

<INPUTclass=buttononclick=reset_info()type=resetvalue=重置>

<SPAN></SPAN>

<LIclass=copyright>作者:草履虫

<LIclass=copyright>时间:2007-6-28

<LIclass=copyright>联系:caolvchong@gmail.com

<LIclass=copyright>Blog---Web2.0之路:<Ahref="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.jsviewplaincopytoclipboardprint?

varflag=[0,0,0,0,0,0];

var$=function(tagName){

returndocument.getElementsByTagName(tagName);

}

//----------接受协议

functionaccept_info(){

flag[0]=1;

check_data();

}

//----------拒绝协议

functionrefuse_info(){

flag[0]=0;

check_data();

}

//----------重置

functionreset_info(){

varinfo=["支持汉字,单词,数字,敏感字符屏蔽","密码在6-16位之间,敏感字符屏蔽","","email是联系重要手段","看不清楚?请点击验证码刷新"]

for(vari=0;i<$("span").length;i++){

$("span")[i].innerHTML=info[i];

flag[i]=0;

}

for(vari=0;i<$("input").length-3;i++){

$("input")[i].value="";

}

check_data();

}

//----------邮箱检测

functioncheck_email(email){

varreEmail=/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;

varb_email=reEmail.test(email);

if(b_email){

$("span")[3].innerHTML="<IMGsrc="yesok.gif">邮箱可用";

flag[1]=1;

check_data();

}

else{

$("span")[3].innerHTML="<IMGsrc="yesno.gif">邮箱错误";

flag[1]=0;

check_data();

}

}

//----------密码检测

functioncheck_password(obj){

varpwd=$("input")[1].value;

varreChinese=/[u0391-uFFE5]+/;

varb_chinese=reChinese.test(pwd);

varreSpace=/s+/;

varb_space=reSpace.test(pwd);

//-------长度测试

if(pwd.length<6){

$("span")[1].innerHTML="<IMGsrc="yesno.gif">密码长度不能小于6";

flag[2]=0;

check_data();

}

//-------合法性检测:不能包含汉字

elseif(b_chinese){

$("span")[1].innerHTML="<IMGsrc="yesno.gif">密码不能包含中文";

flag[2]=0;

check_data();

}

//-------合法性检测:不能包含空格

elseif(b_space){

$("span")[1].innerHTML="<IMGsrc="yesno.gif">密码不能包含空格";

flag[2]=0;

check_data();

}

//-------合法时显示密码强度

else{

//定义对应的消息提示

varnum=getResult(pwd);

varmsg=newArray("<IMGsrc="bad.gif">密码强度差","<IMGsrc="comm.gif">密码强度一般","<IMGsrc="good.gif">密码强度强壮");

$("span")[1].innerHTML=msg[num];

if($("input")[2].value!=""){

check_pw();

}

returnflag[2]=1;

check_data();

}

}

//定义检测函数,返回0/1/2分别代表差/一般/强

functiongetResult(s){

varls=-1;

if(s.match(/[a-z]/ig)){

ls++;

}

if(s.match(/[0-9]/ig)){

ls++;

}

if(s.match(/(.[^a-z0-9])/ig)){

ls++;

}

returnls;

}

//---------密码一致性检测

functioncheck_pw(){

varpwd=$("input")[1].value.toString();

varcheck_pwd=$("input")[2].value.toString();

if(flag[2]==1){

if(pwd==check_pwd){

$("span")[2].innerHTML="<IMGsrc="yesok.gif">密码可以使用";

flag[3]=1;

check_data();

}

else{

$("span")[2].innerHTML="<IMGsrc="yesno.gif">两次密码不相同";

flag[3]=0;

check_data();

}

}

}

//---------用户名合法性检测

functioncheck_id(id_name){//只能字母和数字,是否相同用AJAX判断

varreId=/^[wu0391-uFFE5]+$/;

varb_id=reId.test(id_name);

if(!b_id){

$("span")[0].innerHTML="<IMGsrc="yesno.gif">ID命名非法";

flag[4]=0;

check_data();

}

else{//合法用户名用ajax的checkid()检测是否被注册过

checkid(id_name);

}

}

//---------检查数据,使提交按钮是否生效

functioncheck_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;

}

}

//--------------------------------------------------------------------

varflag=[0,0,0,0,0,0];

var$=function(tagName){

returndocument.getElementsByTagName(tagName);

}

//----------接受协议

functionaccept_info(){

flag[0]=1;

check_data();

}

//----------拒绝协议

functionrefuse_info(){

flag[0]=0;

check_data();

}

//----------重置

functionreset_info(){

varinfo=["支持汉字,单词,数字,敏感字符屏蔽","密码在6-16位之间,敏感字符屏蔽","","email是联系重要手段","看不清楚?请点击验证码刷新"]

for(vari=0;i<$("span").length;i++){

$("span")[i].innerHTML=info[i];

flag[i]=0;

}

for(vari=0;i<$("input").length-3;i++){

$("input")[i].value="";

}

check_data();

}

//----------邮箱检测

functioncheck_email(email){

varreEmail=/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;

varb_email=reEmail.test(email);

if(b_email){

$("span")[3].innerHTML="邮箱可用";

flag[1]=1;

check_data();

}

else{

$("span")[3].innerHTML="邮箱错误";

flag[1]=0;

check_data();

}

}

//----------密码检测

functioncheck_password(obj){

varpwd=$("input")[1].value;

varreChinese=/[u0391-uFFE5]+/;

varb_chinese=reChinese.test(pwd);

varreSpace=/s+/;

varb_space=reSpace.test(pwd);

//-------长度测试

if(pwd.length<6){

$("span")[1].innerHTML="密码长度不能小于6";

flag[2]=0;

check_data();

}

//-------合法性检测:不能包含汉字

elseif(b_chinese){

$("span")[1].innerHTML="密码不能包含中文";

flag[2]=0;

check_data();

}

//-------合法性检测:不能包含空格

elseif(b_space){

$("span")[1].innerHTML="密码不能包含空格";

flag[2]=0;

check_data();

}

//-------合法时显示密码强度

else{

//定义对应的消息提示

varnum=getResult(pwd);

varmsg=newArray("密码强度差","密码强度一般","密码强度强壮");

$("span")[1].innerHTML=msg[num];

if($("input")[2].value!=""){

check_pw();

}

returnflag[2]=1;

check_data();

}

}

//定义检测函数,返回0/1/2分别代表差/一般/强

functiongetResult(s){

varls=-1;

if(s.match(/[a-z]/ig)){

ls++;

}

if(s.match(/[0-9]/ig)){

ls++;

}

if(s.match(/(.[^a-z0-9])/ig)){

ls++;

}

returnls;

}

//---------密码一致性检测

functioncheck_pw(){

varpwd=$("input")[1].value.toString();

varcheck_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();

}

}

}

//---------用户名合法性检测

functioncheck_id(id_name){//只能字母和数字,是否相同用AJAX判断

varreId=/^[wu0391-uFFE5]+$/;

varb_id=reId.test(id_name);

if(!b_id){

$("span")[0].innerHTML="ID命名非法";

flag[4]=0;

check_data();

}

else{//合法用户名用ajax的checkid()检测是否被注册过

checkid(id_name);

}

}

//---------检查数据,使提交按钮是否生效

functioncheck_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.jsviewplaincopytoclipboardprint?

functioncheckcode(regcode){

varxmlhttp;

try{

xmlhttp=newXMLHttpRequest();

}

catch(e){

xmlhttp=newActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4){

if(xmlhttp.status==200){

vardata=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));

}

functioncode_result(data){

varresultbox=$("span")[4];

if(data==1){

resultbox.innerHTML='<IMGsrc="yesok.gif">验证码正确';

flag[5]=1;

check_data();

}

else{

resultbox.innerHTML='<IMGsrc="yesno.gif">验证码错误';

flag[5]=0;

check_data();

}

}

//--------------------------------------------------------------------

functioncheckid(regid){

varxmlhttp;

try{

xmlhttp=newXMLHttpRequest();

}

catch(e){

xmlhttp=newActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4){

if(xmlhttp.status==200){

vardata=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));

}

functionid_result(data){

varresultbox=$("span")[0];

if(data==1){

resultbox.innerHTML='<IMGsrc="yesok.gif">用户名可用';

flag[4]=1;

check_data();

}

else{

resultbox.innerHTML='<IMGsrc="yesno.gif">该用户名已经被注册';

flag[4]=0;

check_data();

}

}

//--------------------------------------------------------------------

functionsendinfo(regname,pwd,email){

varxmlhttp;

try{

xmlhttp=newXMLHttpRequest();

}

catch(e){

xmlhttp=newActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4){

if(xmlhttp.status==200){

vardata=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));

}

functionreg_result(data){

if(data==1){

$("span")[5].innerHTML='<Ahref="http://cceer.xmu.edu.cn/blog/"target=_blank>'+$("input")[0].value+",您好.请点击这里登陆</A>";

}

else{

$("span")[5].innerHTML="注册失败,请联系管理员";

}

}

*这里是所有文件的打包下载(包括所有文件,图片,数据库等,解压后请在IIS下测试)

良好体验度的注册系统.rar

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类