Blogger Information
Blog 42
fans 0
comment 1
visits 26403
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用php来处理表单-4月16日作业
日薪月e的博客
Original
656 people have browsed it

本次作业内容为PHP表单验证。主要使用了PHP对用户注册邮箱、密码、确认密码及文本域内容进行非空、重复、一致性及文本字数等验证功能。现分享代码如下:

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>用php来处理表单-4月16日作业</title>
	<style type="text/css">
		table {				
			background-color: wheat;
			box-shadow: 3px 3px 3px #888;
			border-radius: 3%;
			padding: 15px;
			margin: 30px auto;
		}
		table td {
			padding: 8px;
		}
		table caption {
			font-size: 1.5em;
			margin-bottom: 10px;
			color: seagreen;
			font-weight: bold;
		}
		textarea {
			resize: none;
		}
		form table button {
			width: 100px;
			height: 30px;
			cursor: pointer;
			border: none;
			background-color: seagreen;
			color: white;
			font-weight: bold;
			border-radius: 3px;
		}
		form table button:hover {
			background-color: orangered;
			color: seagreen;
			font-size:1.1em;
			font-weight: bold;
			border-radius: 3px;
			color: white;
		}
	</style>
</head>
<body>	
	<form id="register">
		<table>
			<caption>用户注册</caption>
			<tr>
				<td><label for="email">邮箱:</label></td>
				<td><input type="email" name="email" id="email" autofocus=""></td>
			</tr>
			<tr>
				<td><label for="password1">密码:</label></td>
				<td><input type="password" name="password1" id="password1"></td>
			</tr>
			<tr>
				<td><label for="password2">确认:</label></td>
				<td><input type="password" name="password2" id="password2"></td>
			</tr>
			<tr>
				<td><label for="secret">性别:</label></td>
				<td> <!-- 单选与众不同,点击标签会自动选择默认值 -->
					<input type="radio" name="gender" id="male" value="male" ><label for="male">男</label>
					<input type="radio" name="gender" id="female" value="female"><label for="female">女</label>
					<input type="radio" name="gender" id="secret" value="secret" checked="" ><label for="secret">保密</label>
				</td>
			</tr>
			<tr>
				<td><label for="level">级别</label></td>
				<td>
					<select name="level" id="level">
						<option value="0">小白</option>
						<option value="1" selected="">中级</option>
						<option value="2">大神</option>
				</select>
				</td>
			</tr>
			<tr>
				<td><label for="php">语言:</label></td>
				<td>  <!-- 点击标签会把php做为默认项之一选中 -->
					<input type="checkbox" name="lang[]" id="php" value="php"  checked><label for="php">php</label>
					<input type="checkbox" name="lang[]" id="java" value="java"><label for="java">java</label>
					<input type="checkbox" name="lang[]" id="python" value="php"><label for="python">python</label>
					<input type="checkbox" name="lang[]" id="c" value="c"><label for="c">c</label>
				</td>
			</tr>
			<tr>
				<td valign="middle"><label for="comment">简介:</label></td>
				<td><textarea name="comment" id="comment" rows="3" cols="30"></textarea></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<button type="submit" name="submit" id="submit" value="submit">提交</button>
				</td>
			</tr>
		</table>
	</form>	
	<script type="text/javascript" src="../js/jquery.js"></script>
	<script type="text/javascript">
		//请求邮箱验证
		//blur事件,只要焦点离开即发出请求
		$('#email').blur(function(){
			//使用post方法,但加入?check=email参数,这样可以在服务器端以GET方式获取。
			$.post('admin/check.php?check=email', 'email='+$('#email').val(), function(data){
				switch(data.status) {
					//邮箱在php中验证的结果在前端输出
					case 0:
					//清空前一次的提示信息,以防止重复生成提示信息
					$('td').find('span').remove()
					//在邮箱输入框后面添加一个span元素,移动到span元素中,将“邮箱不能为空”的文本添加到span元素中。
					$('#email').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					break;
					case 1:
					$('td').find('span').remove()
					$('#email').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					break;
					case 2:
					$('td').find('span').remove()
					$('#email').after('<span>').next().text(data.msg).css('color', 'green')
					break;
				}
			//返回数据采用json数据。
			},'json')
		})


		//第一个密码验证
		$('#password1').blur(function(){
			if ($('#email').val().length == 0) {
				return false
			}
			$.post('admin/check.php?check=password1','password1='+$('#password1').val(),function(data){
				if(data.status == 0) {
					//清空前一次的提示信息,以防止重复生成提示信息
					$('td').find('span').remove()
					//在文本框后面添加信息提示并设置焦点
					$('#password1').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					//返回调用者
					return false
				}
			},'json') //返回数据为json格式
		})

		//确认密码验证
		$('#password2').blur(function(){
			//如果邮箱或密码没有输入,则什么都不做,直接返回
			if ($('#email').val().length == 0 || $('#password1').val().length == 0) {
				return false
			}
			$.post('admin/check.php?check=password2', {
				password1: $('#password1').val(),
				password2: $('#password2').val()
			}, function(data){
				switch(data.status) {
					case 0:
					$('td').find('span').remove()
					$('#password2').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					break;
					case 1:
					$('td').find('span').remove()
					$('#password2').after('<span>').next().text(data.msg).css('color', 'red')
					//确认密码不对,应该将焦点设置到第一次的密码框内
					$('#password1').focus()
					break;
					case 2:
					$('td').find('span').remove()
					$('#password2').after('<span>').next().text(data.msg).css('color', 'green')
					break;
				}
				
			},'json')
		})

		//简介验证 
		$('#comment').blur(function(){
			if ($('#comment').val().length == 0 || $('#password1').val().length == 0 || $('#password1').val().length == 0) {
				return false
			}

			$.post('admin/check.php?check=comment', 'comment='+$('#comment').val(), function(data){
				switch(data.status) {
					case 0:
					$('td').find('span').remove()
					$('#comment').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					break;

					case 1:
					$('td').find('span').remove()
					$('#comment').after('<span>').next().text(data.msg).css('color', 'red').prev().focus();
					break;

					case 2:
					$('td').find('span').remove()
					$('#comment').after('<span>').next().text(data.msg).css('color', 'green').prev().focus();
					break;
				}
			},'json')
		})

		//提交数据
		$('#submit').click(function(){
			$.post('admin/check.php?check=submit', $('#register').serialize(), function(data){
				$('td').find('span').remove()
				alert(data)
			},'text')
		})
		
	</script>
</body>
</html>

运行实例 »

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

check.php代码:

实例

 <?php 
 switch ($_GET['check']) {
 	//验证邮箱
 	case 'email':
 		//拿到post方式获取的邮箱,赋给$email	
		$email = $_POST['email']; // 设置默认值
		//验证邮箱不能为空
		//注意不能用isset(),要用empty()验证不能为空
		if (empty($email)) {
			exit(json_encode(['status'=>0,'msg'=>'邮箱不能为空']));
		//验证邮箱不能重复,in_array($var,[已有邮箱1,已有邮箱2,...])
		} else if (in_array($email, ['admin@php.cn','zhu@php.cn'])){
			exit(json_encode(['status'=>1,'msg'=>'邮箱已占用']));
		//邮箱可用
		} else {
			echo json_encode(['status'=>2,'msg'=>'邮箱可用']);
		}
 		break;

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

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

	//简介验证
	case 'comment':
		$comment = $_POST['comment'];
		//非空验证
		if (empty($comment)) {
			exit(json_encode(['status'=>0,'msg'=>'简介不能为空']));
		//校验简介不能少于10个汉字
		} else if (mb_strlen(trim($comment)) < 30) {
			exit(json_encode(['status'=>1,'msg'=>'长度小于10个字符']));
		} else {
			exit(json_encode(['status'=>2,'msg'=>'通过']));
		}

 	//提交验证 
 	case 'submit':
 		//因为数据之前已经全部验证,这里直接返回结果即可
 		exit('恭喜,注册成功');
 }
	
	
	

运行实例 »

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

效果图:

00-1.png

00-2.png

00-3.png

.00-4.png

00.png

小结:仍然对PHP与Ajax实现表单验证很不熟练,目前还无法独立完成作业,继续努力中~~~~~~

Correction status:Uncorrected

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