ASP+ajax完美实现用户表单检测和注册
2008-01-18 14:31
399 查看
之前我在自己网上(http://www.duku123.com)上发布过一篇这样的贴子,后来有朋友找我,说我的那篇文章里的效果比较简单而且需要的字段太少,不知道单选及cookies该如何弄,这里我重新发一篇最近新做的代码.带详细讲解,希望对各位朋友有帮助
程序运行截图
先说JS代码
相信上面的东西大家应该都看明白了.有不明白的可以加我QQ或者我的网站进行交流http://www.duku123.com
下面是页面布局的代码
下面是生成随机验证码的代码
这段应该不用我解释了.只是生成四个随机数字
最后是saveuser.asp的核心代码
差点忘了用户检测页面的代码了checkuser.asp
经过上面的解释这段应该已经很明白了.就不写注释了.如此一来就实现了如今流行的ajax表单检测和提交,最好附上以前我写的那篇文章的地址,以作为参考: http://www.duku123.com/upload/?action-viewnews-itemid-387
程序运行截图
先说JS代码
<script language="javascript" type="text/javascript"> <!-- var msg ; var li_ok='images/li_ok.gif'; //用于显示正确的图标 var li_err='images/li_err.gif' //用于显示错误时的图标 var bname_m=false; msg=new Array( "请输入4-20位字符,英文、数字的组合。", "请输入6位以上字符,不允许空格。", "请重复输入上面的密码。", "请输入您的真实姓名", "请输入电话号码", "请输入电子邮箱", "请输入左边的验证码", "您必须同意注册条款" ) //定义一个消息数组,用于显示提示信息 var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } //建立xmlhttp实现浏览器的兼容 function show(){ if (document.getElementById("country").value=="China"){ document.getElementById("probince").style.display="" }else { document.getElementById("probince").style.display="none" } } //显示隐藏的国家信息对应的地区信息 function GetCookie(sName) { // cookies are separated by semicolons var aCookie = document.cookie.split("; "); for (var i=0; i < aCookie.length; i++) { // a name/value pair (a crumb) is separated by an equal sign var aCrumb = aCookie[i].split("="); if (sName == aCrumb[0]) return unescape(aCrumb[1]); } // a cookie with the requested name does not exist return null; } //用JS读取cookies function on_input(objname){ var strtxt; var obj=document.getElementById(objname); //obj.className="d_on"; //alert(objname); switch (objname){ case "d_username": strtxt=msg[0]; break; case "d_pass": strtxt=msg[1]; break; case "d_pass2": strtxt=msg[2]; break; case "d_truename": strtxt=msg[3]; break; case "d_phone": strtxt=msg[4]; break; case "d_email": strtxt=msg[5]; break; case "d_code": strtxt=msg[6]; break; } obj.innerHTML=strtxt; } //做鼠标放文框时的提示信息 function callServer() { var u_name = document.getElementById("user_name").value; if ((u_name == null) || (u_name == "")||(u_name.length<4)||(u_name.length>20)) { d_username.className="d_err"; d_username.innerHTML=msg[0]; chk=false return chk;}; xmlHttp.open("POST", "user/checkuser.asp", true); xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlHttp.onreadystatechange = updatePage; xmlHttp.send("username="+escape(u_name)); } function updatePage() { if (xmlHttp.readyState < 4) { d_username.innerHTML="loading..."; } if (xmlHttp.readyState == 4 && 200==xmlHttp.status) { var response = xmlHttp.responseText; if (response==1) { d_username.className="d_ok"; d_username.innerHTML='恭喜用户名可以使用。'; } else{ d_username.className="d_err"; d_username.innerHTML="用户名已占用,请重新注册"; } } } //检测用户名是否可用 function out_pass(){ var obj=document.getElementById("d_pass"); var str=document.getElementById("password").value; var chk=true; if (str=='' || str.length<6 || str.length>18){chk=false;} if (chk){ obj.className="d_ok"; obj.innerHTML='密码已经输入。'; }else{ obj.className="d_err"; obj.innerHTML=msg[1]; } return chk; } //检查密码是否输入 function out_pass2(){ var obj=document.getElementById("d_pass2"); var str=document.getElementById("password2").value; var chk=true; if (str=='' || str!=document.getElementById("password").value){chk=false;} if (chk){ obj.className="d_ok"; obj.innerHTML='重复密码输入正确。'; }else{ obj.className="d_err"; obj.innerHTML=msg[2]; } return chk; } //检查密码确认 function out_truename(){ var obj=document.getElementById("d_truename"); var str=document.getElementById("truename").value; var chk=true; if (str=='' || str.length<4){chk=false;} if (chk){ obj.className="d_ok"; obj.innerHTML="姓名已输入"; }else{ obj.className="d_err"; obj.innerHTML=msg[3]; } return chk; } //检查真实姓名 function out_phone(){ var obj=document.getElementById("d_phone"); var str=document.getElementById("phone3").value; var chk=true; if (str=='' || !str.match(/^/d{7,8}$/ig)){chk=false;} if (chk){ document.getElementById("tr_phone").style.disply=""; obj.className="d_ok"; obj.innerHTML="电话号码已输入"; }else{ document.getElementById("tr_phone").style.disply=""; obj.className="d_err"; obj.innerHTML=msg[4]; } return chk; } //检查真实姓名 function out_email(){ var obj=document.getElementById("d_email"); var str=document.getElementById("email").value; var chk=true; if (str==''|| !str.match(/^[/w/./-]+@([/w/-]+/.)+[a-z]{2,4}$/ig)){chk=false} if (chk){ obj.className="d_ok"; obj.innerHTML='电子邮箱地址已经输入。'; }else{ obj.className="d_err"; obj.innerHTML=msg[5]; } return chk; } //检查email function out_code(){ var obj=document.getElementById("d_code"); var str=document.getElementById("code").value; var chk=true; if (str==''|| str!=GetCookie("verifycode")){chk=false} if (chk){ obj.className="d_ok"; obj.innerHTML='验证码已输入'; }else{ obj.className="d_err"; obj.innerHTML=msg[6]; } return chk; } //检查验证码 function out_reg(){ var obj=document.getElementById("d_regtxt"); var chk=true; if (!document.getElementById("regtxt").checked){chk=false} if (chk){ obj.className="d_ok"; obj.innerHTML="您已同意注册条款"; }else{ obj.className="d_err"; obj.innerHTML=msg[7]; } return chk; } //检查是否同意了注册条款 function chk_reg(){ var chk=true if (document.getElementById("user_name").value==''){ chk=false; d_username.className="d_err"; d_username.innerHTML=msg[0]; } if (!out_reg()){chk=false} if (!out_pass()){chk=false} if (!out_pass2()){chk=false} if (!out_truename()){chk=false} if (!out_phone()){chk=false} if (!out_email()){chk=false} if(!out_code()){chk=false} if(chk){ document.getElementById('save_stat').innerHTML='<img src="images/loading.gif" align="absmiddle" />数据提交中……请稍候……' document.getElementById('regbutton').disabled='disabled'; var username=document.getElementById("user_name").value; var password=document.getElementById("password").value; var truename=document.getElementById("truename").value; if(document.regform.sex[0].checked) { var sex=1; } else { var sex=0; } var phone=document.getElementById("phone1").value+document.getElementById("phone2").value+document.getElementById("phone3").value; var fax=document.getElementById("fax1").value+document.getElementById("fax2").value+document.getElementById("fax3").value; var email=document.getElementById("email").value; var mobile=document.getElementById("mobile").value; var address=document.getElementById("street").value+","+document.getElementById("city").value+","+document.getElementById("country").value; var probince=document.getElementById("vprobince").value; var zip=document.getElementById("zip").value; xmlHttp.open("POST", "user/saveuser.asp", true); xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlHttp.onreadystatechange = saveuser; xmlHttp.send("username="+escape(username)+"&password="+escape(password)+"&email="+escape(email)+"&truename="+escape(truename)+"&sex="+escape(sex)+"&phone="+escape(phone)+"&fax="+escape(fax)+"&mobile="+escape(mobile)+"&address="+escape(address)+"&probince="+escape(probince)+"&zip="+escape(zip)); } } function saveuser() { if (xmlHttp.readyState < 4) { d_username.innerHTML="loading..."; } if (4==xmlHttp.readyState){ if (200==xmlHttp.status){ var date=xmlHttp.responseText; if (date==1){ alert("用户注册成功!"); //window.location.href='//exhibit'; window.location.href="/"; }else{ alert("注册发生错误!"); window.location.href="breg.asp"; } }else{ alert("error"); } } } //当点击注册按钮后所进行的检测,如果所有必填项都写了则发送注册信息到user/saveuser.asp进行用户的注册 --> </script> |
下面是页面布局的代码
<table width="80%" align="center" cellpadding="4" cellspacing="0" class="toptable"> <form id="regform" name="regform" method="post" action="breg.asp"> <tr> <td height="35" colspan="3" align="center" class="blod12">请认真、仔细地填写以下信息,严肃的商业信息有助于您获得别人的信任,结交潜在的商业伙伴,获取商业机会!</td> </tr> <tr> <td width="25%" height="30" align="right" class="blod12"><font color="#FF0000">*</font> User Name: </td> <td width="37%" align="left" ><input name="user_name" type="text" class="input" id="user_name" size="30" onFocus="on_input('d_username')" onBlur="callServer()"/></td> <td width="38%" align="left" id="d_username"> </td> </tr> <tr> <td height="30" align="right" class="blod12"><font color="#FF0000">*</font> Pssword:</td> <td align="left"><input name="password" type="password" class="input" id="password" size="30" onFocus="on_input('d_pass')" onBlur="out_pass()" /></td> <td align="left" id="d_pass"> </td> </tr> <tr> <td height="30" align="right" class="blod12"><font color="#FF0000">*</font> Confirm password: </td> <td align="left"><input name="password2" type="password" class="input" id="password2" size="30" onFocus="on_input('d_pass2')" onBlur="out_pass2()"/></td> <td align="left" id="d_pass2"> </td> </tr> <tr> <td height="30" align="right" class="blod12"><font color="#FF0000">*</font> Name:</td> <td align="left" class="blod16"><input name="truename" type="text" class="input" id="truename" size="30" onFocus="on_input('d_truename')" onBlur="out_truename()"/></td> <td align="left" id="d_truename"> </td> </tr> <tr> <td align="right" class="blod12"><font color="#FF0000">*</font> Sex:</td> <td align="left"><input type="radio" name="sex" value="1" /> Male <input type="radio" name="sex" value="0" /> Female</td> <td align="left" id="d_sex"> </td> </tr> <tr> <td height="40" align="right" class="blod12"><font color="#FF0000">*</font> Phone Number: </td> <td colspan="2" align="left" ><table width="68%" cellspacing="0" cellpadding="0"> <tr> <td>Country/Region code</td> <td>Area code(if any) </td> <td>Number</td> </tr> <tr> <td><input name="phone1" type="text" class="input" id="phone1" value="86" size="15" maxlength="4" /></td> <td><input name="phone2" type="text" class="input" id="phone2" size="15" /></td> <td><input name="phone3" type="text" class="input" id="phone3" size="15" onFocus="on_input('d_phone')" onBlur="out_phone()"/></td> </tr> <tr style="disply:none" id="tr_phone"> <td colspan="3" id="d_phone"> </td> </tr> </table></td> </tr> <tr> <td align="right"><span class="blod12">Fax Number: </span></td> <td colspan="2" align="left"><table width="68%" cellspacing="0" cellpadding="0"> <tr> <td>Country/Region code</td> <td>Area code(if any) </td> <td>Number</td> </tr> <tr> <td><input name="fax1" type="text" class="input" id="fax1" value="86" size="15" /></td> <td><input name="fax2" type="text" class="input" id="fax2" size="15" /></td> <td><input name="fax3" type="text" class="input" id="fax3" size="15" /></td> </tr> </table></td> </tr> <tr> <td align="right" class="blod12">Mobile:</td> <td align="left"><input name="mobile" type="text" class="input" id="mobile" size="30" /></td> <td align="left"> </td> </tr> <tr> <td align="right" class="blod12"><font color="#FF0000">*</font> Email:</td> <td align="left"><input name="email" type="text" class="input" id="email" size="30" onFocus="on_input('d_email')" onBlur="out_email()"/></td> <td align="left" id="d_email"> </td> </tr> <tr> <td align="right" class="blod12">Contace Address:</td> <td colspan="2" align="left"><table width="90%" cellspacing="0" cellpadding="0"> <tr> <td width="21%" align="left">Street Address</td> <td width="79%" height="25"><input name="street" type="text" class="input" id="street" size="30" /></td> </tr> <tr> <td align="left">city</td> <td height="25"><input name="city" type="text" class="input" id="city" size="30" /></td> </tr> <tr> <td align="left">Country/Region</td> <td height="25"><select name="country" id="country" class="" tabindex="7" onChange="show()"> ................................ <option value="Chad" >Chad</option> <option value="Chile" >Chile</option> <option value="China" >China</option> <option value="Christmas Island" >Christmas Island</option> <option value="Cocos (Keeling) Islands" >Cocos (Keeling) Islands</option> ............... <option value="Zimbabwe" >Zimbabwe</option></select></td> </tr> <tr style="display:none" id="Probince"> <td align="left">Probince/State</td> <td height="25"><select name="vprobince" id="vprobince"> <option value="华北地区" selected="selected">华北地区</option> <option value="华东地区">华东地区</option> <option value="华南地区">华南地区</option> <option value="华中地区">华中地区</option> <option value="东北地区">东北地区</option> <option value="西北地区">西北地区</option> <option value="西南地区">西南地区</option> <option value="港澳台地区">港澳台地区</option> </select></td> </tr> </table></td> </tr> <tr> <td align="right" class="blod12">Zip/Postal Code:</td> <td colspan="2" align="left"><input name="zip" type="text" class="input" id="zip" size="30" /></td> </tr> <tr> <td align="right"><span class="blod12"><font color="#FF0000">*</font> Enter the code shown:</span></td> <td align="left"><input name="code" type="text" class="input" id="code" size="15" onFocus="on_input('d_code')" onBlur="out_code()"/> <b><font color="#ff0000"><%=request.cookies("verifycode")%></font></b></td> <td align="left" id="d_code"> </td> </tr> <tr> <td align="right"> </td> <td colspan="2" align="left"><p> <input name="regtxt" type="checkbox" id="regtxt" value="checkbox" onClick="out_reg()"/> I agree to the following<br /> ·I accept thewww.duku123.comTerms of Use Agreement<br /> ·I may receive occasional emails relevant towww.duku123.commembership and services</p> <div id="d_regtxt"></div> </td> </tr> <tr> <td colspan="3" align="center"><table width="94%" cellspacing="0" cellpadding="0"> <tr> <td height="35" align="center" bgcolor="EFF4FA"><input name="regbutton" type="button" id="regbutton" onClick="chk_reg()" value=" Submit"/> <div id="save_stat"></div></td> </tr> </table></td> </tr> <tr> <td height="10" align="center"></td> <td colspan="2" align="center"></td> </tr></form> </table> |
<% Randomize Do While Len(rndnum)<4 num1=CStr(Chr((57-48)*rnd+48)) rndnum=rndnum&num1 Loop response.cookies("verifycode")=rndnum %> |
最后是saveuser.asp的核心代码
]<!-- #include file="../web_conn.asp" --> <% Response.ContentType = "text/html" Response.Charset = "utf-8" '因为我做的是国际版,所以用的是utf-8编码,以防止出现乱码 username=trim(request("username")) ................... 省略N行,这只是接受传过来的注册参数 set jrs=server.CreateObject("adodb.recordset") jsql="select username,id from 表名 where username='"&username&"'" jrs.open jsql,conn,1,1 if jrs.eof and jrs.bof then set rs=server.CreateObject("adodb.recordset") sql="select * from 表名 where id is null" rs.open sql,conn,1,3 rs.addnew ......... 省略只是做字段的写入操作 rs.update Session("username")=username '写session response.Cookies("username")=username '写cookies rs.close set rs=nothing response.write "1" '如果注册成功返回1,在前面的js代码里进行接收,如果收到1则跳出对话框注册成功 else response.write "0" '发生错误,即注册失败返回0 end if jrs.close set jrs=nothing response.Cookies("verifycode")="" '清除验证码以防止表单的重复提交 %> |
<!-- #include file="../inc/web_conn.asp" --> <% Response.ContentType = "text/html" Response.Charset = "utf-8" username=trim(request("username")) set rs=server.createobject("adodb.recordset") sql="select username,id from 表名 where username='"&username&"'" rs.open sql,conn,1,1 if rs.bof and rs.eof then response.write "1" else response.write "0" end if rs.close set rs=nothing %> |
相关文章推荐
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- ASP+AJAX应用之注册用户即时检测
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
- Ajax注册用户时实现表单验证
- 用AJAX实现注册用户即时检测(XMLHttpRequest对象)
- ASP和AJAX应用一例,检测注册用户是否有效
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- ajax1.0用户动态检测注册实现(原创)
- ASP.NET 使用WebServices+Ajax实现无刷新验证用户是否已注册
- ajax1.0用户动态检测注册实现(原创)
- Jquery Ajax实现用户注册检测(asp.net)
- ajax实现检测当前注册用户是否存在
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
- Ajax+asp.net实现用户登陆 转自http://www.shangxueba.com/jingyan/2933319.html
- 在ASP.NET AJAX中使用应用程序服务和本地化(2):示例程序:实现用户登录和注销
- ASP.NET自动检测用户名是否注册(利用微软AJAX控件技术)
- PHP+AJAX实现无刷新注册(带用户名实时检测)
- YII用户注册表单的实现熟悉前台各个表单元素操作方式
- MVC3学习:利用mvc3+ajax检测用户是否被注册
- Ajax实现用户注册(详细版)