[教程+分享]具有良好体验度的Web注册系统

*项目名称:具有良好体验度的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防注入
限于本人水平上的限制,错误和不足在所难免,如果你有问题或者建议,请联系我,感谢!
*这里是效果图

这里是所有文件的打包下载(包括所有文件,图片,数据库等,解压后请在IIS下测试)
本地下载
限于文章长度的限制,只帖出两个js文件和一个显示注册页面,至于后台处理页面以及css文件等,请在压缩包中查看 
注册页面reg.htm 
复制代码 代码如下:
<!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" c />
    <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 >
   <ul>
  <li id="title">草履虫---Web注册系统</li>
  <li class="underline">
   <label>注册用户名:
    <input type="text" maxlength="16" />
   </label>
   <span>支持汉字,单词,数字,敏感字符屏蔽</span>
  </li>
  <li>
   <label>注册密码:
    <input type="password"  />
   </label>
   <span>密码在6-16位之间,敏感字符屏蔽</span>
  </li>
  <li class="underline">
   <label>重复密码:
    <input type="password" maxlength="16" />
   </label>
   <span></span>
  </li>
  <li class="underline">
   <label>邮箱:
    <input type="text" />
   </label>
   <span>email是联系重要手段</span>
  </li>
  <li class="underline">验证码:
   <input type="text" maxlength="5" />
   <label>
    <img src="getcode.asp" id="src" height="18" alt="看不清楚?请点击刷新" />
    <span>看不清楚?请点击验证码刷新</span>
   </label>
  </li>
  <li class="underline">
   相关协议:
    <label ><input type="radio" name="info"/>接受</label>
    <label ><input type="radio" name="info"/>不接受</label> 
    <input type="button" value="阅读协议" class="button" />
  </li>
  <li class="underline">
   <input type="submit" value="注册" class="button setleft" />
   <input type="reset" value="重置" class="button"  />
   <span></span>
  </li>
  <li class="copyright">作者:草履虫</li>
  <li class="copyright">时间:2007-6-28</li>
  <li class="copyright">联系:caolvchong@gmail.com</li>
  <li class="copyright">Blog---Web2.0之路:<a href="[url=http://cceer.xmu.edu.cn/blog/%22%3Ehttp://cceer.xmu.edu.cn/blog/%3C/a%3E%3C/li]http://cceer.xmu.edu.cn/blog/">http://cceer.xmu.edu.cn/blog/<;/a></li[/url]>
</ul>
  </body>
</html>

2.数据合法性检测detect.js 
复制代码 代码如下:
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").innerHTML=info;
    flag=0;
   }
   for(var i=0;i<$("input").length-3;i++){
    $("input").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=/^[\w\u0391-\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;
    }
   }

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

3.关于ajax数据交互ajax.js 
复制代码 代码如下:
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="注册失败,请联系管理员";
}
}

时间: 2024-10-22 13:13:00

[教程+分享]具有良好体验度的Web注册系统的相关文章

[教程+分享]具有良好体验度的Web注册系统_应用技巧

*项目名称:具有良好体验度的Web注册系统 *作者:草履虫 *联系:caolvchong@gmail.com *时间:2007-6-29 *起因和版权说明: 1.蓝色理想上有位会员发布了个类似的系统,提问说验证码不支持firefox的刷新,于是萌生念头做一个.本系统外观(按钮取色等)借鉴了该系统,但细节实现原理并不相同(该文地址:http://bbs.blueidea.com/thread-2761325-1-4.html). 2.另外,自己做的这个注册系统中利用了网络上的无组件验证码(作者si

建立良好体验度的Web注册系统ajax_javascript技巧

*项目名称:具有良好体验度的Web注册系统 *作者:草履虫 *联系:caolvchong@gmail.com *时间:2007-6-29 *起因和版权说明:   1.蓝色理想上有位会员发布了个类似的系统,提问说验证码不支持firefox的刷新,于是萌生念头做一个.本系统外观(按钮取色等)借鉴了该系统,但细节实现原理并不相同(该文地址:http://bbs.blueidea.com/thread-2761325-1-4.html).   2.另外,自己做的这个注册系统中利用了网络上的无组件验证码(

电商网站Web设计提高用户体验度的九个要点

无论是传统商业时代还是互联网电商时代,提高用户的极致体验都是达成营销盈利目标的重要行动.而对于电商而言,Web设计的核心与目标就是以用户为中心,追求极致的用户体验,并完成其本身所承载的商业或用户诉求等目标. 互联网时代,电商网站Web设计提高用户体验度有以下九个要点: 一.网站定位 首先,你应该确定你的网站的用户群有哪些,是否承载电子商务功能单位,是否满足在线购物需求等等.传统的电商网站页面颜色过于单调.布局太过传统且整体缺乏活力,只是满足官网的定位,但是却无法满足电子商务的网站需求.因此,这时

Cracer 2015 最新 价值1500元web渗透脚本入侵百集教程分享

问题描述 Cracer2015最新价值1500元web渗透脚本入侵百集教程分享(无key)博客分享地址:http://cracer.com/?p=318

百度云Web版上传一个文件夹教程分享

给各位百度云软件的使用者们来详细的解析分享一下百度云Web版上传一个文件夹的教程. 教程分享: 第一步:安装文件夹上传插件.   第二步:选择上传文件夹.   第三步:开始上传.   好了,以上的信息就是小编给各位百度云的这一款软件的使用者们带来的详细的百度云Web版上传一个文件夹的教程解析分享的全部内容了,各位看到这里的软件使用者们,小编相信大家现在那是非常的清楚了方法了吧,那么大家就快去按照小编上面的方法自己去试着上传下吧.

页面利用渐进式JPEG来提升用户体验度_php实例

今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. Baseline JPEG 这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中.打开这个文件显示它的内容时,数据将按照存储时的顺序从上到下一行一行的被显示出来,直到所有的数据都被读完,就完成了整张图片的显示.如果文件较大或者网络下载速度较

用户体验度占多少?百度2013核心算法中的心得

百度算法的调整,让我们这些站长失去了方向,迷茫了很多,以前完全靠链接支撑的做法已经不合时宜,我们也发现有些外链比较好的站点排名并不一定很好,由此可见,百度现在越来越重视用户体验度,那如何理解用户体验度呢?下面跟大家谈一下自己的看法. 一. 提高用户体验度永远不会过时.1.一个网站提供的内容非常好,用户量非常大,粘性非常高,能够解决用户的问题,这样的网站用户体验度就非常好.其本身就可以吸引大量的用户,获得很大的流量.2.从搜索引擎的角度讲,搜索引擎要想提供优质的内容,一定会千方百计的把这种用户体验

搜索引擎如何判断网站的用户体验度

不知道一些站长会不会像我一样好奇搜索引擎是如何来判断网站的用户体验度,在这个内容为王,用户体验为皇的年代,搜索引擎怎么就知道网站的用户体验度,搜索引擎是机器,不是人,不可能感受到用户体验,究竟如何来判断呢?笔者分析了一下,总结了一些搜索引擎判断的依据,下面是笔者个人的观点. 跳出率和平均访问时长 使用统计工具,可以很清楚的了解到用户访问网站的跳出率和平均访问时长,跳出率越高,访问时间就越短,说明用户就越不喜欢你的网站,好的网站用户会访问的时间长,搜索引擎认为用户跳出的越快,这个网站用户体验越不好

悦怀SEO:浅谈技巧之用户体验度的提高

网站的用户体验在网站优化中起着重要的作用.网站想要更高的流量,除了坚持更新原创内容,做高质量外链外,提高网站黏度和用户体验度也是必须的.用户体验增加了,就会给网站带来用户的第二次访问,甚至更多次,而且也会减少网站的跳出率,这样网站流量有了,又满足了用户的需求,那么这样的网站还担心没有排名吗?下面悦怀营销(www.yuehuai.com )就跟大家一来探讨提高用户体验度需要的一些小技巧: 第一:网站内的图片不要过多;笔者曾经打开过一个医院的网站,打了半天才打开,打开之后从网站头看到尾我郁闷了,全站