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桌面中心(三) 修改数据库
Mar 11 PHP
中英文字符串翻转函数
Dec 09 PHP
PHP 定界符 使用技巧
Jun 14 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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出错界面
2006/10/09 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
Vue 3.0中jsx语法的使用
2020/11/13 Javascript
python中subprocess批量执行linux命令
2018/04/27 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
python实现3D地图可视化
2020/03/25 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
python让函数不返回结果的方法
2020/06/22 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
服装机修工岗位职责
2013/12/26 职场文书
骨干教师培训制度
2014/01/13 职场文书
国际会议邀请函范文
2014/01/16 职场文书
总经理的岗位职责
2014/02/23 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
小学安全汇报材料
2014/08/14 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL