(二)原生js+php实现用户名查重(改良)

前提:之前写了第一种方法,发现问题很大,修改提示信息还得找到php修改,特麻烦。所以在此进行改良。

一、mysql准备

数据库服务器主机地址localhost
登录账户admin1
登录密码admin1
数据库admin1
数据表user
主键id
所需查询(匹配)字段name

在这里插入图片描述

二、html部分(regist.html)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="box">
			<p>
				<span>请输入账号:</span>
				<input type="text" id="uname" onkeyup="chkName(this.value);" />
				<span id="chk"></span>
			</p>
		</div>
		<script>
			//这里 chk 需放到html下面才可获取,放在头部提前会加载报错
			var chk = document.getElementById('chk');

			var xmlhttp;
			function chkName(name) {
				if (name.length == 0) {
					chk.innerHTML = '';
					return;
				}
				if (window.XMLHttpRequest) {
					xmlhttp = new XMLHttpRequest();
				} else {
					xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
				}
				xmlhttp.onreadystatechange = function() {
					if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
						//ajax获取php文件输出文本内容,进行js控制修改
						if (xmlhttp.responseText == 'true') {
							//这样就可以随意控制了
							chk.innerHTML = '恭喜,可注册!';
							chk.style.color = 'green';
						} else {
							chk.innerHTML = '用户名已被注册!';
							chk.style.color = 'red';
						}
					}
				}
				xmlhttp.open('GET','regcheck.php?name='+name,true);
				xmlhttp.send();
			}
		</script>
	</body>
</html>

三、php部分(regcheck.php)

<?php
	$dbhost = 'localhost';	//数据库服务器主机地址
	$dbname = 'admin1';		//账号
	$dbpass = 'admin1';		//密码
	$conn = mysqli_connect($dbhost, $dbname, $dbpass, 'admin1');
	
	//数据库连接判断
	if(! $conn){die('连接失败!'.mysqli_error($conn));}
	
	$chk_name = $_GET['name'];
	if ($chk_name != '') {
		//$sql = 'select user from login where user like "'.$chk_name.'"';
		$sql = 'select name from user where name like "'.$chk_name.'"';
		$retval = mysqli_query($conn, $sql);
		
		//第一种:返回数组,能匹配则输出Array,无匹配则空
			//mysqli_fetch_array() 也是可以的
		$row = mysqli_fetch_assoc($retval);	//从结果集中取得一行作为关联数组
		if (!$row) {	//查询不到值,则输出true
			echo 'true';	//true,表示匹配不出值,可注册
			#	echo $row;	//空
		} else {		//可以查到值,则输出false
			echo 'false';	//false,表示可以匹配到值,不能注册
			#	echo $row; //Array
		}

		//第二种,返回行的数量/长度,存在值,则为1,不存在值,则为0
		#	$row_length = mysqli_num_rows($retval);	//获取行的长度
		#	if ($row_length == '0') {	//无行数即无值,可注册
		#		echo 'true';
		#	} else {	//有行数即有值,不能注册
		#		echo 'false';
		#	}
	}
?>

四、演示结果

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值