Keep on going, never give up.

利用Ajax无刷新验证用户名、密码和邮箱等输入信息

大家在很多网站或论坛上注册账户时,经常可以看到,您的用户名刚输入完,马上网页就会红字提示该用户名已被占用,输入注册邮箱时也会如此提醒重复等提示信息。这种技术的实现原理很简单,就是使用Ajax的延迟载入技术。本文采用最简单的方法,描述一下Ajax无刷新校验原理,希望对该验证过程不清楚的站长朋友有所帮助。

首先来看主程序代码(reg.html):

 <div id="reg"> 
        请输入用户名:<input id="usrname" value="请输入用户名" onfocus="regInit();regKey()"   onblur="regInit()" onkeyup="regKey()"/>
</div>

<div id="regtip" style="display:none">用户名重复或非法</div>

<!--以下为JS代码部分,功能是Ajax响应验证用户名合法性-->

<script language="javascript">

function getem(aID)
{
      return (document.getElementById) ? document.getElementById(aID): document.all[aID];
}

function changeDsp()
{
    getem(regtip).style.display="";//也可以使用inner方式重新赋值
}
<!--Ajax校验用户名-->
var v=getem('usrname');
var s_value=getem('usrname').value;//保存初值
function regInit()
{
 v.style.color="#000000";
 if(v.value==s_value)//无效用户名
  v.value='';
 else if(v.value==''){//恢复默认提示信息
  v.value=s_value;
  v.style.color="";
 }
}
function regKey()
{
 str=v.value;
 if(!str){
  return 0;
 }
 var xhttp=getXmlhttp();  
 xhttp.onreadystatechange=function(){
  if(xhttp.readyState == 4 && (xhttp.status==200 || window.location.href.indexOf("http")==-1)){
   document.getElementById("regtip").innerHTML=xhttp.responseText;  
   changeDsp();
  }
 }
 var url = "chkusr.php?usr="+ encodeURI(str);//需要进行Ajax的URL地址 
 xhttp.open("GET",url,true);
 xhttp.setRequestHeader("If-Modified-Since","0");//不缓存
 xhttp.send(null);
}
</script>

程序说明:

1、onblur事件是输入框失去焦点事件,onkeyup是键盘按下又松开时候触发。

2、reg是注册信息部分,这里大家可以加上自己的代码,比如用户名、密码、邮箱等都可以使用Ajax进行适时校验。

3、regtip是提示信息部分,一般为空,如果Ajax校验失败,则在这里进行错误提示。

4、chkusr.php是用户名的校验程序,后面的usr就是传递的URL参数,如果使用ASP等其它语言,修改方式类似,最终只需要返回查询的结果提示信息即可,比如“输入用户名重复,请更换个更酷的”、“电子邮箱已被注册,请修改后再次提交注册”等等。

5、示例chkusr.php程序如下,实际使用肯定需要跟数据库相连,特别要小心用户输入信息的过滤和安全:

<?php

//注意这里好像是用不带PHP三个字母返回值是包括PHP限定符(在IE6上),带PHP就没问题,稍后再研究一下具体区别

$usr=$_trim['usr'];

if($usr=='admin')

{
        echo "Sorry, this name is fobiddened to use.";

}

else

{

        echo "Hi, this name is free for register."

}
?>

更多文章:

使用ajax无刷新延迟载入分页——仿163网易首页翻页

PHP编程的一些小经验阶段总结

使用Javascript为网站增加日期时间展示

网页编程中如何动态的添加删除表格行

Javascript同时兼容IE和FIREFOX的一些注意点

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.