Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/10 6:50:41 PHP+AJAX实现无刷新注册(带用户名实时检测)_[PHP教程]
· 用户名称: onChange="usercheck('check')" onBlur="usercheck('check')"> * 4-16个字符,英文小写、汉字、数字、最好不要全部是数字。 · 用户密码: onChange="pwdcheck('pwd')" onBlur="pwdcheck('pwd')"> * 密码字母有大小写之分。6-16位(包括6、16),限用英文、数字。 · 重复密码: onChange="pwdrecheck('repwd')" onBlur="pwdrecheck('repwd')"> * 请再次输入登录密码。
如图:
红色部分就是一会要调用的js函数了,当我们选定一个文本框后就会开始调用,现在我们看上面那个页面包含的ajaxreg.js文件的代码,里面就是包含了ajax框架和一些判断函数。
var http_request=false; function send_request(url){//初始化,指定处理函数,发送请求的函数 http_request=false; //开始初始化XMLHttpRequest对象 if(window.XMLHttpRequest){//Mozilla浏览器 http_request=new XMLHttpRequest(); if(http_request.overrideMimeType){//设置MIME类别 http_request.overrideMimeType("text/xml"); } } else if(window.ActiveXObject){//IE浏览器 try{ http_request=new ActiveXObject("Msxml2.XMLHttp"); }catch(e){ try{ http_request=new ActiveXobject("Microsoft.XMLHttp"); }catch(e){} } } if(!http_request){//异常,创建对象实例失败 window.alert("创建XMLHttp对象失败!"); return false; } http_request.onreadystatechange=processrequest; //确定发送请求方式,URL,及是否同步执行下段代码 http_request.open("GET",url,true); http_request.send(null); } //处理返回信息的函数 function processrequest(){ if(http_request.readyState==4){//判断对象状态 if(http_request.status==200){//信息已成功返回,开始处理信息 document.getElementById(reobj).innerHTML=http_request.responseText; } else{//页面不正常 alert("您所请求的页面不正常!"); } } } function usercheck(obj){ var f=document.reg; var username=f.username.value; if(username==""){ document.getElementById(obj).innerHTML=" 用户名不能为空!"; f.username.focus(); return false; } else{ document.getElementById(obj).innerHTML="正在读取数据..."; send_request('checkuserreg.php?username='+username); reobj=obj; } } function pwdcheck(obj){ var f=document.reg; var pwd=f.userpwd.value; if(pwd==""){ document.getElementById(obj).innerHTML=" 用户密码不能为空!"; f.userpwd.focus(); return false; } else if(f.userpwd.value.length<6){ document.getElementById(obj).innerHTML=" 密码长度不能小于6位!"; f.userpwd.focus(); return false; } else{ document.getElementById(obj).innerHTML=" 密码符合要求!"; } } function pwdrecheck(obj){ var f=document.reg; var repwd=f.reuserpwd.value; if (repwd==""){ document.getElementById(obj).innerHTML=" 请再输入一次密码!"; f.reuserpwd.focus(); return false; } else if(f.userpwd.value!=f.reuserpwd.value){ document.getElementById(obj).innerHTML=" 两次输入的密码不一致!"; f.reuserpwd.focus(); return false; } else{ document.getElementById(obj).innerHTML=" 密码输入正确!"; }}
不难看出,数据是通过异步传输到checkuserreg.php接着回送回信息显示出来来达到实时检测用户名的目的,至于密码,只作了长度的实时判断,有兴趣的朋友可以扩充功能。来看下checkuserreg.php到底都做了什么:
header('Content-Type:text/html;charset=GB2312');//避免输出乱码 include('inc/config.inc.php');//包含数据库基本配置信息 include('inc/dbclass.php');//包含数据库操作类 username=trim(_GET['username']);//获取注册名 //----------------------------------------------------------------------------------- db=new db;//从数据库操作类生成实例 db->mysql(dbhost,dbuser,dbpassword,dbname);//调用连接参数函数 db->createcon();//调用创建连接函数 //----------------------------------------------------------------------------------- querysql="select username from cr_userinfo where username='username'";//查询会员名 result=db->query(querysql); rows=db->loop_query(result); //若会员名已注册 //----------------------------------------------------------------------------------- if(rows){ echo" 此会员名已被注册,请更换会员名!"; } //会员名未注册则显示
//---------------------------------------------------------------------------- else{ echo" 此会员名可以注册!"; } if(action==reg){ addsql="insert into cr_userinfo values(0,'username','userpwd','time',50,1,'userquestion','useranswer')"; db->query(addsql); echo" 恭喜您,注册成功!请点击这里登陆!"; } db->close();//关闭数据库连接 ?>
注释写的还算详细,大家应该都能看懂,再看信息合法后我们提交注册信息实现无刷新注册的PHP代码,senduserinfo.php:
header('Content-Type:text/html;charset=GB2312');//避免输出乱码 include('inc/config.inc.php');//包含数据库基本配置信息 include('inc/dbclass.php');//包含数据库操作类 username=trim(_GET['username']);//获取注册名 userpwd=md5(trim(_GET['userpwd']));//获取注册密码 time=date("Y-m-d"); //----------------------------------------------------------------------------------- db=new db;//从数据库操作类生成实例 db->mysql(dbhost,dbuser,dbpassword,dbname);//调用连接参数函数 db->createcon();//调用创建连接函数 //----------------------------------------------------------------------------------- //开始插入数据 //----------------------------------------------------------------------------------- addsql="insert into cr_userinfo values(0,'username','userpwd','time',50,1,'userquestion','useranswer')"; db->query(addsql); echo" 恭喜您,注册成功!请点击这里登录!"; db->close();//关闭数据库连接 ?>
OK!!大功告成,来看看效果图:
1.
2.
3.
4.
5.
怎么样?还不错吧,贴了这么多累死了,希望大家喜欢~~~~
来源:辉老大的技术博客
赞