ajax+javascript+php实现注册用户名无刷新验证

user_register.htm  用户注册的htm,

<html>

   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>注册页面</title>
      <script language="javascript" type="text/javascript" >


      //初始化AJAX对象
function InitAjax()
{
    var ajax = false;
        if(window.XMLHttpRequest) {
            ajax = new XMLHttpRequest();
        } else if(window.ActiveXObject) {
            ajax = new ActiveXObject('Microsoft.XMLHTTP');
        }
  return ajax;
}
//AJAX 应用实体
function sendajax(sURL, pdata, obj,type)    //,sURL是可以验证的页面,pdata是要验证的变量值,obj是要显示的处理结果,type是自定义的区分username还是email
{
      var ajax = InitAjax();
  //以POST方式传递
    ajax.open('POST',sURL,true);  
    //传递pdata值
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    ajax.onreadystatechange=function()
  {
    if(ajax.readyState==4)
    {
      if(ajax.status!=200)
      {
        self.status="访问出错,请重试!";
      }
      else
      {
     //   eval(ajax.responseText);
        obj.innerHTML=ajax.responseText;
    //    delete ajax;
    //    ajax=null;
    //    CollectGarbage();
      }
    }
  }
    switch(type)    // 区分是username还是email的请求
     {
       case 1:
     ajax.send('username=' + pdata);   //将值传递给php页面验证
       case 2:
      ajax.send('email=' + pdata);
        default:
      ajax.send(null);        
     }
  }
    
        function check()
        {
           if(form.password.value=='')
           {
             alert("请输入密码!");
           }
          if(form.re_password.value!=form.password.value)
          {
             alert("两次输入的密码不一致");
             return false;
          }
          else
          {
            return true;
          }
        }


      </script>
   </head>
    <body>
           <b>注册会员</b>
         <form id="form" name="register" action="register.php" method="post">
             <table align="center" width="60%">
               <tr><td>会员名</td><td><input type="text"  name="username" οnblur="sendajax('userajax.php?action=check_user',this.value,usernameMsg,1)"></td>
                      <td id="usernameMsg"></td>   </tr>
                <tr><td>电子邮箱</td><td><input type="text"  name="email" οnblur="sendajax('userajax.php?action=check_email',this.value,passwordMsg,2)"></td>
                       <td id="passwordMsg"></td></tr>
                <tr><td>密码</td><td><input type="password"  name="password" οnblur="check()"></td></tr>
                <tr><td>再次输入密码</td><td><input type="password"  name="re_password" ></td></tr>
                <tr><input type="hidden" name="action" value="register"></tr>
                <tr><td colspan="2" align="center"><input type="submit" name="OK" value="提交" οnclick="return check()"><input type="reset" name="reset" value="重置"></td></tr>                
    </body>

</html>



userajax.php   //验证用户名和邮箱是否已被注册

<?php

 include("inc.php");   //配置的连接数据库的类
 $username = isset($_POST['username'])? trim($_POST['username']):'';
 $password = isset($_POST['password'])? trim($_POST['password']):'';
 $email = isset($_POST['email'])? trim($_POST['email']):'';
 $other = isset($_POST['other'])? trim($_POST['other']):array();
 $action = isset($_GET['action'])? trim($_GET['action']):'';
  header("Content-type:text/html;charset=gb2312");   //必须得,若没有此行,返回的echo中文值为乱码
 //验证用户名是否可以注册
 if ($action=='check_user')
 {
   if(strlen($username)<3)
   {
     echo "用户名长度不能少于3个字符";

   }
   elseif(!check_user($username))
   {
     echo "*该用户名已经存在,请重新输入";
   }
   else
   {
     echo "可以注册";
   }
 }
 //验证用户邮箱是否被注册
  if ($action=='check_email')
 {
   // $email= trim($_POST['email']);
   if(!check_email($email))
   {
     echo "*该邮箱已存在,请重新输入";

   }

   else
   {
     echo "可以注册";
   }
 }
 
 
 //检查用户名
   function check_user($username)
   {
      global $db;
      if ($db->getOne("select count(*) from users where user_name='" .$username. "'")>0)
      {
         return false;             
      }
      else
      {
         return true;
      }
   }
   //检测邮箱地址
   function check_email($email)
   {
     global $db;
     if ($db->getOne("select count(*) from users where email='" .$email. "'")>0)
      {
         return false;             
      }
      else
      {
         return true;
      }
   }
   
   ?>
   
   
   
   
   
   
   
   
   
   
   
   
  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值