PHP+AJAX实现无刷新注册(带用户名实时检测)

上一篇 / 下一篇  2006-12-07 13:00:12

很多时候,我们在网上注册个人信息,在提交完页面后,总得等待页面刷新来告诉我们注册是否成功,遇到网络差的时候,如果注册了一大串的东西,在经过漫长的等待页面刷新后,得到的确是“您的用户名已被使用”或XXXXXXX不合法,我想大家的心情一定特别不爽,今天就介绍个AJAX实现页面不刷新注册+实时检测用户信息的简单注册程序,希望对大家有所帮助。好的,先看注册界面代码:PHPChina 开源社区门户wW\ h~3Q$B]u
   
#]8Fc0w9a'qOu/c0<table width="831" border="0" align="center" cellpadding="0" cellspacing="0">
dxa @%r)S7F0  <tr style="display:none">
LR2? Z]P/^5L0    <td height="35" align="center" id="result"> </td>
\e#Dv$uKmT0  </tr>PHPChina 开源社区门户 Fo3Z;Ffd'P0J5I.F
</table>
J1P$\*e@!pr3Qz3]A0<table width="100%" height="256" border="0" align="center" cellpadding="1" cellspacing="1">PHPChina 开源社区门户O[8}&HB vQ
      <tr>
d}.n&Bb"t u8YY4J0        <td width="150" align="left" bgcolor="#FFFFFF">  · 用户名称:          </td>
5Y9SqP(]0        <td width="310" align="center" bgcolor="#FFFFFF">PHPChina 开源社区门户]l J"e d3P d$|
          <input name="username" type="text" class="inputtext" id="username">PHPChina 开源社区门户1Y XY)o;PEyA
        
FG|1HnK x B0        <font color="#FF6633">*</font></td>PHPChina 开源社区门户Xl*iC JZ*i
        <td align="left" bgcolor="#FFFFFF" id="check"> 4-16个字符,英文小写、汉字、数字、最好不要全部是数字。</td>PHPChina 开源社区门户 ` fSzmu6d3f+sG6e
      </tr>PHPChina 开源社区门户d1Bg8af/^*J
      <tr>
'TS ts p0nT(n0        <td width="150" align="left" bgcolor="#FFFFFF">   · 用户密码:</td>
A}-KB1qn.s0        <td width="310" align="center" bgcolor="#FFFFFF">PHPChina 开源社区门户\Z|(lC'hp VJ!d
          <input name="userpwd" type="password" class="inputtext" id="userpwd">PHPChina 开源社区门户.S)Bk$lTf2h'[
PHPChina 开源社区门户(BM(`"} z0s%l:r
          <font color="#FF6633">*</font>        </td>
xZQh:g4h0        <td align="left" bgcolor="#FFFFFF" id="pwd"> 密码字母有大小写之分。6-16位(包括6、16),限用英文、数字。</td>
7W:QD Y9mH*v w!]k0      </tr>
9A!Mqe+C,w0          <tr>PHPChina 开源社区门户7_a6i6f2Tb7W
        <td width="150" align="left" bgcolor="#FFFFFF">  · 重复密码:</td>
J3d9z [L&Yt${0        <td width="310" align="center" bgcolor="#FFFFFF">  
_(S.V)w*F&|4?0          <input name="reuserpwd" type="password" class="inputtext" id="reuserpwd"
>
/UX:L+IG$| n)I0           
t(Xb]7w/Q]+i0
           <font color="#FF6633">*</font>        </td>PHPChina 开源社区门户(U K#sX(? i!x
        <td align="left" bgcolor="#FFFFFF" id="repwd"> 请再次输入登录密码。</td>
2m3H9KC!wlk@0          </tr>PHPChina 开源社区门户 X8?6H4VOD8B^#M
    </table>
PHPChina 开源社区门户qxlE zku
   如图:
!\X'uQS6[w/J0  PHPChina 开源社区门户+Pfx}2oq(n+l

KH)Eb$Ek ^/bg{0红色部分就是一会要调用的js函数了,当我们选定一个文本框后就会开始调用,现在我们看上面那个页面包含的ajaxreg.js文件的代码,里面就是包含了ajax框架和一些判断函数。PHPChina 开源社区门户6x0@gv1A b? P
   var http_request=false;
*S#xL(c^ ty0  function send_request(url){//初始化,指定处理函数,发送请求的函数
*dR(Jc!bxL9W"o(o#M"K$A0    http_request=false;PHPChina 开源社区门户 ~J5K/L1p Z#O
        //开始初始化XMLHttpRequest对象
Pr#o J(^0        if(window.XMLHttpRequest){//Mozilla浏览器PHPChina 开源社区门户;m M$z7t:ut~5Y
         http_request=new XMLHttpRequest();PHPChina 开源社区门户#Rhj C/^@ W
         if(http_request.overrideMimeType){//设置MIME类别PHPChina 开源社区门户"SH%OX8d\pA4Q
           http_request.overrideMimeType("text/xml");
U/]k\IS0         }PHPChina 开源社区门户i K J0k*e/SsR:~
        }
A2JY&Qa,n'oj_0        else if(window.ActiveXObject){//IE浏览器PHPChina 开源社区门户/jlDB y.W'LD&F+D-?
         try{PHPChina 开源社区门户*Sb;s9?\.I)`F3N[)n.W+V
          http_request=new ActiveXObject("Msxml2.XMLHttp");
$U/}%@(TbE0         }catch(e){
'hw*jp{/H)\q0          try{
-};[/ev)}0          http_request=new ActiveXobject("Microsoft.XMLHttp");PHPChina 开源社区门户8}6obs;I8bw2dm
          }catch(e){}
9Y$Di!GI!U,b5Vr0         }PHPChina 开源社区门户8H `L x2M"C
    }PHPChina 开源社区门户,[:?$_0LMT5RQ
        if(!http_request){//异常,创建对象实例失败PHPChina 开源社区门户t5@*vpLq1mz
         window.alert("创建XMLHttp对象失败!");PHPChina 开源社区门户&TZo],G^ ^tKX
         return false;PHPChina 开源社区门户GH ej|)?F4o
        }
G0\:? i~i3@A9\0        http_request.onreadystatechange=processrequest;
WYt3eg3e}0        //确定发送请求方式,URL,及是否同步执行下段代码PHPChina 开源社区门户6CQ pS"l'I F6[R
    http_request.open("GET",url,true);PHPChina 开源社区门户+^2BB p:Z
        http_request.send(null);
6U6@qH_a0  }PHPChina 开源社区门户 r4H8tL t%d!|
  //处理返回信息的函数PHPChina 开源社区门户 crm7Vd
  function processrequest(){
_7uiTN#WK^s0   if(http_request.readyState==4){//判断对象状态
p]r[^u0     if(http_request.status==200){//信息已成功返回,开始处理信息PHPChina 开源社区门户J7nk9N-W
          document.getElementById(reobj).innerHTML=http_request.responseText;
)zpa'a N0         }
&[KAOW;p"D0         else{//页面不正常
W'@aSm{:\Lh0          alert("您所请求的页面不正常!");PHPChina 开源社区门户,p4V:OcG
         }
#Ly0s(d.t0I"l0   }PHPChina 开源社区门户7lP;` l6@x t y'Q1Q
  }
(i W XGv8V+e6wtm0  function usercheck(obj){
5_Q)E:Q.Nq0   var f=document.reg;
N+HG!e!J5aD0   var username=f.username.value;PHPChina 开源社区门户@^ Xv6UO ep*]
   if(username==""){
D*f9t } }'j FsA!v0   document.getElementById(obj).innerHTML=" <font color=red>用户名不能为空!</font>";
t(a)o4e8}/N QX0        f.username.focus();PHPChina 开源社区门户*}J{:m7T1e
        return false;
8l[EK2cT1o9F0yOO0   }PHPChina 开源社区门户-_8aB R)A?
   else{PHPChina 开源社区门户2Nopj|5p
   document.getElementById(obj).innerHTML="正在读取数据...";
C[v;D4T K0   send_request('checkuserreg.php?username='+username);PHPChina 开源社区门户!{/[GPkqu4Q!AeO
   reobj=obj;
1z;s$O&Lr7qAu0   }
;`q4zMWjc&A3DB&@e0  }
2r4Q8o z.y:S0  function pwdcheck(obj){PHPChina 开源社区门户E#w(n2]d%aP@G
    var f=document.reg;
1L-r'Qux0        var pwd=f.userpwd.value;PHPChina 开源社区门户&EI{*^5xgb n ao a
        if(pwd==""){PHPChina 开源社区门户 cy3H;sY5k
          document.getElementById(obj).innerHTML=" <font color=red>用户密码不能为空!</font>";
0c9^.qXJ0HM9v$Y0          f.userpwd.focus();PHPChina 开源社区门户3bqA_v1j#U1`
          return false;
~7V ~j-|-x0        }PHPChina 开源社区门户0o"_[TS%@@
        else if(f.userpwd.value.length<6){PHPChina 开源社区门户1R.D(D A.[lA v
          document.getElementById(obj).innerHTML=" <font color=red>密码长度不能小于6位!</font>";
e I-_^2ro(jx1v0          f.userpwd.focus();
3V yN*G`)E0          return false;PHPChina 开源社区门户y`8a@V5oN D
        }
4r}9S%eY&b;M0        else{PHPChina 开源社区门户Nn:qp*yz)~
          document.getElementById(obj).innerHTML=" <font color=red>密码符合要求!</font>";
QD}0]t c0        }PHPChina 开源社区门户6fm y4j8Kl0vL
  }PHPChina 开源社区门户l_y}9J
  function pwdrecheck(obj){PHPChina 开源社区门户9w%oY,R Ct3C.?
    var f=document.reg;PHPChina 开源社区门户o0q"gkR"|5lW
        var repwd=f.reuserpwd.value;PHPChina 开源社区门户5\Ai/q.U"oP5I
        if (repwd==""){
+XZV&]nl*D$s0          document.getElementById(obj).innerHTML=" <font color=red>请再输入一次密码!</font>";
!x Fv:x+yz0          f.reuserpwd.focus();
%OkZ'm ts0          return false;
8s eoYN;A0        }
Lt,NL!pM'm-U0        else if(f.userpwd.value!=f.reuserpwd.value){
&R?ybJC d8vr M0          document.getElementById(obj).innerHTML=" <font color=red>两次输入的密码不一致!</font>";
c Jsb\)zxF6J0          f.reuserpwd.focus();PHPChina 开源社区门户Q ar4{NmvC_
          return false;
vO![qbW0        }PHPChina 开源社区门户&~ svBW P%kW%z
        else{PHPChina 开源社区门户T-Y&L_;o&`*D
          document.getElementById(obj).innerHTML=" <font color=red>密码输入正确!</font>";
\G@a0ou0        }
$wQnJt;l0  }

N/h+f+P;giUm-k&~z0不难看出,数据是通过异步传输到checkuserreg.php接着回送回信息显示出来来达到实时检测用户名的目的,至于密码,只作了长度的实时判断,有兴趣的朋友可以扩充功能。来看下checkuserreg.php到底都做了什么:PHPChina 开源社区门户n(ie#Xj Bj
<?php
c\&RL1i7](M0  header('Content-Type:text/html;charset=GB2312');//避免输出乱码PHPChina 开源社区门户 oXI4CM%xpyS8b"h"S
  include('inc/config.inc.php');//包含数据库基本配置信息PHPChina 开源社区门户kCcpdK,h
  include('inc/dbclass.php');//包含数据库操作类PHPChina 开源社区门户*@M|3G;sh BNe
  $username=trim($_GET['username']);//获取注册名
w i1}#\7WNTA'Q0  //-----------------------------------------------------------------------------------PHPChina 开源社区门户GG4N/Z:^
  $db=new db;//从数据库操作类生成实例PHPChina 开源社区门户\ q{N Yf
  $db->mysql($dbhost,$dbuser,$dbpassword,$dbname);//调用连接参数函数
`!o`#N}8}/GP0  $db->createcon();//调用创建连接函数
Zc!tdd^I0e4_"~0  //-----------------------------------------------------------------------------------
PB6u S;}-A8T0  $querysql="select username from cr_userinfo where username='$username'";//查询会员名
A*b c!Z7}L9~0  $result=$db->query($querysql);PHPChina 开源社区门户 \~Jxt@K
  $rows=$db->loop_query($result);PHPChina 开源社区门户 D^bxj4u
  //若会员名已注册PHPChina 开源社区门户 }*AU E+m1f
  //-----------------------------------------------------------------------------------
zH p2e)j.Y C6` ~0  if($rows){
9N.`lL#@)W}L:t0          echo" <font color=red>此会员名已被注册,请更换会员名!</font>";PHPChina 开源社区门户 S p j;fa3I
  }
)R:}[f dTmn0  //会员名未注册则显示
yn1vo#z!~A"R0  //-----------------------------------------------------------------------------------
$jm9j9^o-e6g"@n;kH0  else{PHPChina 开源社区门户s`'[ l!R lSn*L
          echo" <font color=red>此会员名可以注册!</font>";PHPChina 开源社区门户MCy Q,v(I
  }PHPChina 开源社区门户|9~CaP0p
  if($action==reg){PHPChina 开源社区门户s1?,hyr
  $addsql="insert into cr_userinfoPHPChina 开源社区门户;uAAO N/oD6t]3v*{
          values(0,'$username','$userpwd','$time',50,1,'$userquestion','$useranswer')";
r*}.g(bEx T C0PHPChina 开源社区门户k#r s ?(F4B `H'm
  $db->query($addsql);
U^(`(K1\ [ wN0  echo"<img src=images/pass.gif> <font color=red>恭喜您,注册成功!请点击<a href=login.php>这里</a>登陆!</font>";
8Lb(e"b"X$b5?~0  }PHPChina 开源社区门户0LQ O0MMp
  $db->close();//关闭数据库连接PHPChina 开源社区门户'w;])HOc,ETanh
?>
PHPChina 开源社区门户qwVE,mP|'WX
注释写的还算详细,大家应该都能看懂,再看信息合法后我们提交注册信息实现无刷新注册的PHP代码,senduserinfo.php:
ws~po:{ h0<?php
9a ^ P_}(j1X0  header('Content-Type:text/html;charset=GB2312');//避免输出乱码PHPChina 开源社区门户({oL PlVT
  include('inc/config.inc.php');//包含数据库基本配置信息
M,a:n3gq'l0  include('inc/dbclass.php');//包含数据库操作类
:f XXqa]V H#]0  $username=trim($_GET['username']);//获取注册名
owzu7c.?a0  $userpwd=md5(trim($_GET['userpwd']));//获取注册密码PHPChina 开源社区门户:E`b @_)N{q7If
  $time=date("Y-m-d");PHPChina 开源社区门户/dORk0J,]u1a"l
  PHPChina 开源社区门户 W%De-p7c$I
  //-----------------------------------------------------------------------------------
GJ U0QR;^b7x*I0  $db=new db;//从数据库操作类生成实例
g.UK*y ri|)Y4B0  $db->mysql($dbhost,$dbuser,$dbpassword,$dbname);//调用连接参数函数PHPChina 开源社区门户/|E:I.]-UU5Pfbh
  $db->createcon();//调用创建连接函数PHPChina 开源社区门户hpDR4@W2w2y[
  //-----------------------------------------------------------------------------------PHPChina 开源社区门户P^K }br
  //开始插入数据PHPChina 开源社区门户Q bFG%i7x@Q
  //-----------------------------------------------------------------------------------PHPChina 开源社区门户 k+l$y"@1h]
  $addsql="insert into cr_userinfo values(0,'$username','$userpwd','$time',50,1,'$userquestion','$useranswer')";
1U"a"T#v2SN)`~0  $db->query($addsql);
Rz*^9cI/tB*{I0  echo"<img src=images/pass.gif> <font color=red>恭喜您,注册成功!请点击<a href=login.php>这里</a>登录!</font>";
l%?.H bx U&a[0j N0  PHPChina 开源社区门户-}!P@]SnX)?
  $db->close();//关闭数据库连接PHPChina 开源社区门户x#o2k1j2R3eBEL7c
?>

Py1Qk G}0OK!!大功告成,来看看效果图:
o0d g*D8s }K.Y01.
oC;Q#I6H5Fu8p0
PHPChina 开源社区门户;K-RK{]$Qn|!s

W\1i)E{|q02.
Gx-A.GzSE0PHPChina 开源社区门户/gWLCV`0m

A(V/^h.|4Ed03.PHPChina 开源社区门户+RoKF rH
PHPChina 开源社区门户b.Iu$D+omC$xwJ3K

$I nx.?0LF%}i^04.
T4CL(c?WjZ0
c o$` {^2`a:bb0
*V7@7y`B05.
9jIE)[5^0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 29288
  • 日志数: 99
  • 图片数: 1
  • 建立时间: 2006-10-25
  • 更新时间: 2007-02-06

RSS订阅

Open Toolbar