Blogger Information
Blog 100
fans 8
comment 2
visits 150179
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php处理表单验证-2018年4月17日23时49分发布(16日作业)
lilove的博客
Original
710 people have browsed it

主题:

利用jquery的$.post()提交表单数据请求,由服务器上的check.php处理表单数据验证。

实现效果:

0416作业效果.jpg

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>用户注册验证</title>
	<style type="text/css">
		table {
			width:400px;
			background-color: #CCFF99;
			box-shadow: 2px 4px 2px #555;
			border:1px solid #777;
			border-radius:3%;
			margin:30px auto;
			padding:15px;
		}
		table caption {
			font-size: 1.5em;
		}
		table td {
			padding:5px;
		}
		textarea {
			resize: none;
		}
		table button {
			width: 100px;
			height: 30px;
			cursor: pointer;
			border: none;
			background-color: #6666FF;
			color: white;
			font-size: 1.1em;
		}
		table button:hover {
			background-color: #CC66CC;
			color: white;
		}
		span {
			font-size:0.7em;
		}
	</style>
</head>
<body>
	<form action="admin/check.php" method="post">
		<table>
			<caption>用户注册</caption>
			<tr>
				<td><label for="user">用户名称:</label></td>
				<td><input type="text" id="user" name="user"></td>
			</tr>
			<tr>
				<td><label for="pwd">用户密码:</label></td>
				<td><input type="password" id="pwd" name="pwd"></td>
			</tr>
			<tr>
				<td><label for="cfpwd">确认密码:</label></td>
				<td><input type="password" id="cfpwd" name="cfpwd"></td>
			</tr>
			<tr>
				<td><label>用户性别:</label></td>
				<td>
					<input type="radio" id="male" name="sex" value="male"><label for="male">男</label>
					<input type="radio" id="female" name="sex" value="female" checked><label for="female">女</label>
					<input type="radio" id="secret" name="sex" value="secret"><label for="secret">保密</label>
				</td>
			</tr>
			<tr>
				<td><label for="">用户类别:</label></td>
				<td>
					<select name="" id="">
						<option value="">普通用户</option>
						<option value="" selected>二级用户</option>
						<option value="">操作员</option>
						<option value="">管理员</option>
					</select>
				</td>
			</tr>
			<tr>
				<td><label>技术类型:</label></td>
				<td>
					<input type="checkbox" id="front" name="skill[]" value="front"><label for="front">前端</label>
					<input type="checkbox" id="server" name="skill[]"  value="server" checked><label for="serverfront">后端</label>
	 				<input type="checkbox" id="design" name="skill[]" value="design"><label for="design">设计</label>
	 			</td>
			</tr>
			<tr>
				<td valign="middle"><label for="msg">用户介绍:</label></td>
				<td><textarea name="msg" id="msg" cols="30" rows="3"></textarea></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><button type="submit" id="submit" name="submit" value="submit">提交</button></td>
			</tr>
		</table>
	</form>
</body>
<!-- jquery 核心 JavaScript 文件 -->
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
	//请求邮箱验证
	$('#user').blur(function(){
		// post方式发送请求
		$.post('admin/check.php?check=user', 'user='+$('#user').val(), function(data){
			// switch()循环输出验证结果
			switch(data.status) {
				// 当status为0时,取出返回的相应data数据
				case 0:
				// 先移除之前生成的警告信息
				$('td').find('span').remove()
				// 添加新的警告信息
				$('#user').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
				break;
				case 1:
				$('td').find('span').remove()
				$('#user').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
				break;
				case 2:
				$('td').find('span').remove()
				$('#user').after('<span>').next().text(data.msg).css('color', 'green')
				break;
			}
			
		},'json')
	})


	//密码验证
	$('#pwd').blur(function(){
		// 判断用户名称是否为空
		if ($('#user').val().length == 0) {
			return false
		}
		$.post('admin/check.php?check=pwd','pwd='+$('#pwd').val(),function(data){
			if(data.status == 0) {
				$('#pwd').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
			}
		},'json')
	})

	//确认密码验证
	$('#cfpwd').blur(function(){
		if ($('#user').val().length == 0) {
			return false
		}
		// 将密码和确认密码一同发送到check.php验证
		$.post('admin/check.php?check=cfpwd', {
			pwd: $('#pwd').val(),
			cfpwd: $('#cfpwd').val()
		}, function(data){
			switch(data.status) {
				case 0:
				$('td').find('span').remove()
				$('#cfpwd').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
				break;
				case 1:
				$('td').find('span').remove()
				$('#cfpwd').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
				break;
				case 2:
				$('td').find('span').remove()
				$('#cfpwd').after('<span>').next().text(data.msg).css('color', 'green')
				break;
			}
			
		},'json')
	})

	// 用户介绍验证
	$('#msg').blur(function(){
		$.post('admin/check.php?check=msg', 'msg='+$('#msg').val(), function(data){
		if ($('#user').val().length == 0) {
			return false
		}
		switch(data.status) {
			// 验证非空
			case 0:
			$('td').find('span').remove()
			$('#msg').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
			break;
			// 验证大于30个字节(10个汉字)
			case 1:
			$('td').find('span').remove()
			$('#msg').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
			break;
			// 验证通过
			case 2:
			$('td').find('span').remove()
			$('#msg').after('<span>').next().text(data.msg).css('color', 'green')
			break;
			}	
		},'json')
	})	
</script>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

服务器端check.php代码:

<?php 
// 获取前端的post请求数据
switch ($_GET['check']) {
	//验证邮箱
	case 'user': 		
	$user = $_POST['user']; // 设置默认值
	// 非空必须要用empty()验证,json_encode()返回json数据格式
	if (empty($user)) {
		// status为状态表示参数,不同的数值代表不同状态,并执行不同语句
		exit(json_encode(['status'=>0,'msg'=>'用户名不能为空']));
	} else if (in_array($user, ['admin@php.cn','zhu@php.cn'])){
		// 验证不通过时用exit()退出循环语句,不往下执行
		exit(json_encode(['status'=>1,'msg'=>'用户名已占用']));
	} else {
		// 验证通过时执行输出语句
		echo json_encode(['status'=>2,'msg'=>'用户名可用']);
	}
		break;

	//验证密码
	case 'pwd':
		$pwd = $_POST['pwd'];
	if (empty($pwd)) {
		exit(json_encode(['status'=>0,'msg'=>'密码不能为空']));
	}
	break; 	

	//验证确认密码
	case 'cfpwd':
		$pwd = $_POST['pwd'];
		$cfpwd = $_POST['cfpwd'];
	if (empty($cfpwd)) {
		exit(json_encode(['status'=>0,'msg'=>'确认不能为空']));
	} else if ($pwd != $cfpwd){
		exit(json_encode(['status'=>1,'msg'=>'二次密码不相等']));
	}  else {
		exit(json_encode(['status'=>2,'msg'=>'验证通过']));
	}
	break; 		

	// 验证用户介绍
	case 'msg': 		
	$msg = $_POST['msg']; // 设置默认值
	if (empty($msg)) {
		exit(json_encode(['status'=>0,'msg'=>'介绍不能为空']));
	 } 
	//使用strlen()获取字符串长度
	 else if (strlen($msg) < 30){
		exit(json_encode(['status'=>1,'msg'=>'介绍不能少于10个汉字']));
	} else {
		echo json_encode(['status'=>2,'msg'=>'介绍信息可用']);
	}
	break;
}	

运行实例 »

点击 "运行实例" 按钮查看在线实例

重点:

前端:$.post()方式发送请求,移除之前生成的警告信息,将密码和确认密码一同发送到check.php验证

后端:$_GET['check']获取前端请求数据,非空必须要用empty()验证,使用strlen()获取字符串长度

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post