在php中使用Xajax能够即时与数据库发生交互‘

带给用户更好的体验

主要的应用有网页的即时、不刷新的登录系统

也可以利用于注册系统中

即时验证用户名是否被占用

一、基本目标

首先在mysql中有一张用户信息表user

编写一个用户注册系统,一开始注册按钮是禁用的状态

当用户输入用户名完毕时,马上检查这个用户名是否被占用,如果是,禁用注册按钮,并弹出对话框

如果用户输入的用户名没有被占用,则解锁注册按钮,但如果用户输入两次输入的密码不一致,同样不允许用户注册

直到用户满足所有注册条件的时候,才放行

用户注册成功能够成功把用户名与密码添加到数据库之中,如上面的aa与b:

二、基本思想

由于第一个输入框在失去焦点时,需要与数据库发生交互,所以需要用到PHP的Xajax技术

关于什么是失去焦点,见我之前的《【JavaScript】组件焦点与页内锚点间传值》(点击打开链接)一文,

关于什么是PHP的Xajax技术,与Xajax如何配置,可以参考我刚写的《【php】Xajax Helloworld》(点击打开链接)一文

而第二个输入框与第三个输入框不需要与数据库发生交互,在前台就可以做出判断,因此仅仅使用JavaScript就可以,

下面的代码说明,不再对此进行讨论,因为之前我在《【JavaScript】表单即时验证,不成功不让提交》(点击打开链接)一文中已经对此讨论得比较详细了。

三、制作过程

分两个页面,一个是用户填写注册信息的页面xajaxrec.php,一个是把用户注册信息填写到数据库的处理页面下xajxrecsuc.php

xajxrecsuc.php的代码如下,与之前《【php】数据库的增删改查和php与javascript之间的交互》(点击打开链接)的插入处理页面dbinsert.php根本就是一样的,由于笔者用的是同一张用户表,同一个数据库,因此连代码都不改就能够使用了,就把“添加成功”四个大字,改成“注册成功”而已:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>注册成功</title>
</head><body>
<?php
$username=$_REQUEST["username"];
$password=$_REQUEST["password"];
$con=mysql_connect("localhost","root","root");
if(!$con){die("连接失败!");}
mysql_select_db("test",$con);
mysql_query("insert into user(username,password) values ('".$username."','".$password."');");
mysql_close($con);
?>
<script>
alert("注册成功");
window.location.href="xajaxreg.php";
</script>
</body>
</html>

然后重点来说说这个xajaxrec.php:

<?php
include 'xajax_core/xajax.inc.php';
$xajax=new xajax();
//首先在xajax声明一个check函数
$xajax->registerFunction("check");
//这个check函数需要前台传来用户名username
function check($username){$orps=new xajaxResponse();//连接数据库,看看用没有这个用户名$con=mysql_connect("localhost","root","root");if(!$con){die("连接失败!");}mysql_select_db("test",$con);$dbusername=null;$result=mysql_query("select * from user where username='".$username."';");while($row=mysql_fetch_array($result)){$dbusername=$row["username"];}//如果没有,根本不可能查出数据,对dbusername赋值的,所以dbusername还是为空的if(is_null($dbusername)){//弹窗,把id为submitbtn的提交按钮disabled属性清理掉,解锁disabled$orps->alert("恭喜,该用户名未被占用,可以注册");$orps->clear("submitbtn","disabled");}else{//否则弹窗之后为submitbtn上锁,加上disabled属性$orps->alert("该用户名已被占用,请更换被的用户名");$orps->assign("submitbtn","disabled","disabled");}//人走带门,然后是三个xajax的指定动作mysql_close($con);return $orps;}$xajax->processRequest();
$xajax->printJavascript();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户注册</title>
</head><body>
用户注册
<!--为表单上个onsubmit属性,是因为但用户点击提交按钮的时候,跑完这个check()函数再提交这个表单-->
<form action="xajxregsuc.php" method="post" οnsubmit="return check()">
<!--但用户名的输入框失去焦点时,也就是用户输入完成,光标离开这个输入框的时候,马上调用xajax中的check函数,带过去的值就是本输入框的内容-->
用户名:<input type="text" name="username" οnblur="xajax_check(this.value);" /><br />
密码:<input type="password" name="password" id="password" /><br />
<!--确认密码这里调用下面的javascript检查即可-->
请再次输入密码:<input type="password" name="passwordconfirm" id="passwordconfirm" οnchange="check()"/><br />
<input type="submit" id="submitbtn" value="注册" disabled />
</form>
</body>
</html>
<script>
function check() {var check = false;var password = document.getElementById("password").value;var pwdc = document.getElementById("passwordconfirm").value;if (password != pwdc) {alert("两次输入密码不一致");check = false;} else {check = true;}return check;
}
</script>

至此整个注册系统就完成。

四、展望

这个注册系统还是存在缺陷的,首先,涉及数据库操作的第一个处理框,没有进行有害sql注入语句的过滤,

并且所有的处理框,输入乱七八糟的字符都是可以放行

甚至在密码处理框,不输入密码也是放行的,

这些小细节如果是对于一个要运行在网络的web系统,必须对其完善。

【php】注册系统和使用Xajax即时验证用户名是否被占用相关推荐

  1. 建立良好体验度的Web注册系统

    *项目名称:具有良好体验度的Web注册系统 *作者:草履虫 *联系:caolvchong@gmail.com *时间:2007-6-29 *起因和版权说明:   1.蓝色理想上有位会员发布了个类似的系 ...

  2. iOS开发之登录注册系统

    一.登录的种类划分: 1. 普通登录 2.使用独立系统的登录 3.单点登录 4. Oauth2.0登录 详细介绍如下: 1.普通登录: 普通的登录需求,要的就是一个登录页面,输入账号密码,提交Form ...

  3. php mysql会员注册_PHP实现会员注册系统

    分享一个基于PHP的非常简单基础的注册系统,为了减轻难度没有使用Cookie和Session,数据库大家按照自己需求更改,有问题欢迎联系我. index.html Title 注册 分开一下 登录 j ...

  4. python注册系统_Python制作简易注册登录系统

    Python制作简易注册登录系统 这篇文章主要为大家详细介绍了 Python 简易注册登录系统的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Python 是一种面向对象.解释型计算机程 ...

  5. WordPress注册登录注册系统插件

    简介: WordPress的登录注册系统有很多问题,不符合一般用户的使用习惯,举例来说: (1)注册时候无法自行设置登录密码,系统将自行生成一段非常复杂的密码给用户,根本无法记忆,只能再次重置密码. ...

  6. WordPress登录注册系统的优化

    WordPress的登录注册系统有很多问题,不符合一般用户的使用习惯,举例来说: (1)注册时候无法自行设置登录密码,系统将自行生成一段非常复杂的密码给用户,根本无法记忆,只能再次重置密码. (2)用 ...

  7. Django实现邮箱注册系统

    今天用Django来实现简易的邮箱注册系统,一个完整的邮箱注册系统需要有数据库存储信息.视图提供邮箱验证和前端页面展示数据 一.数据建模 在models.py中建立模型: 邮箱验证表 对于邮箱验证来说 ...

  8. 会员注册 php,PHP实现会员注册系统

    分享一个基于php数据库大家按照自己需求更改,有问题欢迎联系我. index.html join_us.html 注册页面,发一个表单给add_member.php,使用post. Title 欢迎加 ...

  9. python实现注册登录系统_python实现登录与注册系统

    本文实例为大家分享了python实现登录与注册系统的具体代码,供大家参考,具体内容如下 实现功能 1.调用文本文件里的用户信息 2.可以将注册信息存储在文本文件里 3.实现了密码格式的限制 具体用户信 ...

最新文章

  1. iOS 13 适配TextField 崩溃问题
  2. Cell子刊:MRI有助于揭示睡眠之谜
  3. Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
  4. 云计算怎么支撑起《流浪地球》的硬科幻实力?
  5. 使用UDP的简单C/S程序
  6. IP头、TCP头、UDP头详解以及定义
  7. linux传几百G文件,为什么我不推荐另外2种快速传几百G文件的方法!
  8. WebService入门案例
  9. Java中实时监控目录下文件变化的两种实现方法介绍
  10. [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
  11. 3.3.7 使用difflib.get_close_matches函数
  12. Java实现港(澳)台大陆身份证校验(亲测有效)
  13. 实现AlphaGo(二):快速构建棋盘和围棋规则
  14. 一个计算机专业学生几年的Java编程经验汇总
  15. MySQL期末复习题和答案
  16. DNS域名解析流程图(详细)
  17. Oracle字符串截取和大小写转换
  18. 大数据分析在病毒疫苗研究中的应用
  19. linux 抓包生成文件,Linux下使用libpcap进行网络抓包并保存到文件(函数介绍)
  20. [python]解析通达信盘后数据获取历史日线数据

热门文章

  1. CSS深度学习 - 文本方向 direction 和 dir
  2. SpringCloud-Gateway之RoutePredicateFactory
  3. 这只狗子不一样,雷军大秀新宠「铁蛋」!
  4. 二分法求解平方根注意点:
  5. Python王者荣耀皮肤批量下载
  6. Python编程从入门到实践(第三、四章的列表和元祖)
  7. config linux start up with only one app - firefox
  8. mldonkey设置!看图(转载)
  9. 传智播客-刘意-java深入浅出精华版学习笔记Day05
  10. 向爱康投稿:读《浪潮之巅》,听潮起潮落