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


Posted in PHP onJanuary 02, 2007

很多时候,我们在网上注册个人信息,在提交完页面后,总得等待页面刷新来告诉我们注册是否成功,遇到网络差的时候,如果注册了一大串的东西,在经过漫长的等待页面刷新后,得到的确是“您的用户名已被使用”或XXXXXXX不合法,我想大家的心情一定特别不爽,今天就介绍个AJAX实现页面不刷新注册+实时检测用户信息的简单注册程序,希望对大家有所帮助。好的,先看注册界面代码:

  <table width="831" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr style="display:none">
    <td height="35" align="center" id="result"> </td>
  </tr>
</table>
<table width="100%" height="256" border="0" align="center" cellpadding="1" cellspacing="1">
      <tr>
        <td width="150" align="left" bgcolor="#FFFFFF">  · 用户名称:          </td>
        <td width="310" align="center" bgcolor="#FFFFFF"> 
          <input name="username" type="text" class="inputtext" id="username" onChange="usercheck('check')" onBlur="usercheck('check')">
        <font color="#FF6633">*</font></td>
        <td align="left" bgcolor="#FFFFFF" id="check"> 4-16个字符,英文小写、汉字、数字、最好不要全部是数字。</td>
      </tr>
      <tr>
        <td width="150" align="left" bgcolor="#FFFFFF">   · 用户密码:</td>
        <td width="310" align="center" bgcolor="#FFFFFF"> 
          <input name="userpwd" type="password" class="inputtext" id="userpwd" onChange="pwdcheck('pwd')" onBlur="pwdcheck('pwd')"
          <font color="#FF6633">*</font>        </td>
        <td align="left" bgcolor="#FFFFFF" id="pwd"> 密码字母有大小写之分。6-16位(包括6、16),限用英文、数字。</td>
      </tr>
   <tr>
        <td width="150" align="left" bgcolor="#FFFFFF">  · 重复密码:</td>
        <td width="310" align="center" bgcolor="#FFFFFF">  
          <input name="reuserpwd" type="password" class="inputtext" id="reuserpwd" onChange="pwdrecheck('repwd')" onBlur="pwdrecheck('repwd')"> 
           <font color="#FF6633">*</font>        </td>
        <td align="left" bgcolor="#FFFFFF" id="repwd"> 请再次输入登录密码。</td>
   </tr>
    </table>

如图:

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

 

红色部分就是一会要调用的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=" <font color=red>用户名不能为空!</font>";
 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=" <font color=red>用户密码不能为空!</font>";
   f.userpwd.focus();
   return false;
 }
 else if(f.userpwd.value.length<6){
   document.getElementById(obj).innerHTML=" <font color=red>密码长度不能小于6位!</font>";
   f.userpwd.focus();
   return false;
 }
 else{
   document.getElementById(obj).innerHTML=" <font color=red>密码符合要求!</font>";
 }
  }
  function pwdrecheck(obj){
    var f=document.reg;
 var repwd=f.reuserpwd.value;
 if (repwd==""){
   document.getElementById(obj).innerHTML=" <font color=red>请再输入一次密码!</font>";
   f.reuserpwd.focus();
   return false;
 }
 else if(f.userpwd.value!=f.reuserpwd.value){
   document.getElementById(obj).innerHTML=" <font color=red>两次输入的密码不一致!</font>";
   f.reuserpwd.focus();
   return false;
 }
 else{
   document.getElementById(obj).innerHTML=" <font color=red>密码输入正确!</font>";
 }
}

   不难看出,数据是通过异步传输到checkuserreg.php接着回送回信息显示出来来达到实时检测用户名的目的,至于密码,只作了长度的实时判断,有兴趣的朋友可以扩充功能。来看下checkuserreg.php到底都做了什么:

<?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" <font color=red>此会员名已被注册,请更换会员名!</font>";
  }
  //会员名未注册则显示 

  //----------------------------------------------------------------------------
  else{
   echo" <font color=red>此会员名可以注册!</font>";
  }
  if($action==reg){
  $addsql="insert into cr_userinfo
          values(0,'$username','$userpwd','$time',50,1,'$userquestion','$useranswer')";

  $db->query($addsql);
  echo"<img src=images/pass.gif> <font color=red>恭喜您,注册成功!请点击<a href=login.php>这里</a>登陆!</font>";
  }
  $db->close();//关闭数据库连接
?>

   注释写的还算详细,大家应该都能看懂,再看信息合法后我们提交注册信息实现无刷新注册的PHP代码,senduserinfo.php:

<?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"<img src=images/pass.gif> <font color=red>恭喜您,注册成功!请点击<a href=login.php>这里</a>登录!</font>";

  $db->close();//关闭数据库连接
?>

OK!!大功告成,来看看效果图:

1.

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

 

2.

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

 

3.

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

 

4.

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

 

5.

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

 

怎么样?还不错吧,贴了这么多累死了,希望大家喜欢~~~~

PHP 相关文章推荐
php URL编码解码函数代码
Mar 10 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
php中简单的对称加密算法实现
Jan 05 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 #PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 #PHP
默默简单的写了一个模板引擎
Jan 02 #PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 #PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 #PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 #PHP
PHP+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 #PHP
You might like
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
如何判断php数组的维度
2013/06/10 PHP
ini_set的用法介绍
2014/01/07 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
微信小程序实现吸顶特效
2020/01/08 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python魔法方法-属性访问控制详解
2016/07/25 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
荷兰本土平价百货:HEMA
2017/10/23 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
积极贯彻学习两会精神总结
2014/03/17 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
地球一小时活动总结
2015/02/27 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
市级三好生竞选稿
2015/11/21 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python