php注册系统和使用Xajax即时验证用户名是否被占用


Posted in PHP onAugust 31, 2017

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

带给用户更好的体验

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

也可以利用于注册系统中

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

一、基本目标

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

php注册系统和使用Xajax即时验证用户名是否被占用

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

php注册系统和使用Xajax即时验证用户名是否被占用

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

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

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

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

php注册系统和使用Xajax即时验证用户名是否被占用

二、基本思想

由于第一个输入框在失去焦点时,需要与数据库发生交互,所以需要用到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" rel="external nofollow" ; 
</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" onsubmit="return check()"> 
<!--但用户名的输入框失去焦点时,也就是用户输入完成,光标离开这个输入框的时候,马上调用xajax中的check函数,带过去的值就是本输入框的内容--> 
用户名:<input type="text" name="username" onblur="xajax_check(this.value);" /><br /> 
密码:<input type="password" name="password" id="password" /><br /> 
<!--确认密码这里调用下面的javascript检查即可--> 
请再次输入密码:<input type="password" name="passwordconfirm" id="passwordconfirm" onchange="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 相关文章推荐
实用函数2
Nov 08 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
php5.3 注意事项说明
Jul 01 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP APP微信提现接口代码
Sep 30 PHP
php和asp语法上的区别总结
May 12 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 #PHP
laravel如何开启跨域功能示例详解
Aug 31 #PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 #PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 #PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 #PHP
php实现与python进行socket通信的方法示例
Aug 30 #PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 #PHP
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Django视图类型总结
2021/02/17 Python
Hotels.com南非:酒店预订
2017/11/02 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
《纸船和风筝》教学反思
2014/02/15 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
社团活动总结报告
2014/06/27 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
天鹅湖观后感
2015/06/09 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书