zoukankan      html  css  js  c++  java
  • tp框架---表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。

    关于基础知识,请查看手册“自动验证”一章。

    一、静态验证

    (1)在Ceshi/Controller/路径下新建Yanzheng控制器。

         YanzhengController.class.php页面

    注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型

         create方法是对表单提交的POST数据进行自动验证

    <?php
    namespace CeshiController;
    use ThinkController;
    class YanzhengController extends  Controller
    {
    
    		   public function jtyz(){		   	
    		   	$n= D("users");
    		
    		   	if(empty($_POST)){
    		   		
    		   		$this->show();
    		   		
    		   	}else{  
    		   	 //验证要在model层写
    			      if($n->create()){
    			      	echo "验证通过!";
    			      }else{
    			      	echo $n->getError();  //获取错误信息
    			      }			   		
    		   	}
    		}
    
      public function _empty(){
       	echo "您访问的操作方法不存在!";
       } 
    }
    

     (2)在view层做jtyz.html页面

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<form action="__ACTION__" method="post">
    		<div> 用户名:<input type="text" name="uid"></div>
    		<div> 请输入密码:<input type="text" name="pwd1"></div>
    		<div> 请再次输入密码:<input type="text" name="pwd2"></div>
    		<div> 年龄:<input type="text" name="age"></div>
    		<div> 邮箱:<input type="text" name="email"></div>
    		<input type="submit" value="验证" />
    		</form>
    	</body>
    </html>
    

      效果图:

    (3)在model层写静态验证的验证:(路径如图)

    UsersModel.class.php

    <?php
    namespace CeshiModel;
    use ThinkModel;
    class UsersModel extends Model
    {
    	 protected $_validate = array(    
    	 //非空验证
    	 array("uid","require","用户名不能为空"),
    	 //相等验证
    	 array("pwd1","require","密码不能为空"),
    	 array("pwd2","pwd1","两次密码输入不一致","0","confirm"),
    	 //范围验证
    	  array("age","18,30","年龄不在范围内","0","between"),
    	 //正则验证
    	  array("email","email","邮箱格式不正确"),
    	  );
    }
    

      

     依次验证效果图:

    当全部为空时,点击验证

    提示:

     当输入用户名后,点击验证:

    显示:

    两次密码输入不一致时,会提示;年龄不在范围内会提示;邮箱格式不正确时会提示;否则会提示验证通过。

    二、动态验证 

    (1)  YanzhengController.class.php页面

    <?php
    namespace CeshiController;
    use ThinkController;
    class YanzhengController extends  Controller
    {
    
     //非空验证 静态
    //		   public function jtyz(){		   	
    //		   	$n= D("users");
    //		
    //		   	if(empty($_POST)){
    //		   		
    //		   		$this->show();
    //		   		
    //		   	}else{  
    //		   		 //验证要在model层写
    //			      if($n->create()){
    //			      	echo "验证通过!";
    //			      }else{
    //			      	echo $n->getError();  //获取错误信息
    //			      }			   		
    //		   	}
    //		}
    //动态
    		 public function dtyz(){
    		   	
    		   	
    		   	if(empty($_POST)){
    		   		$this->show();
    		   	}
    		   	else
    		   	{   
    		   		//验证规则
    		   	    $rules = array(    
                    array('uid','require','用户名不能为空!'),
                     );
    					 
    				 $u= M("users");
    					  					  
    			      if($u->validate($rules)->create()){
    			      	$this->ajaxReturn("OK","eval"); //如果成功
    			      }else{
    			      	$this->ajaxReturn($u->getError(),"eval");  //如果不成功
    			      }
    			   		
    		   	}
    		}
      public function _empty(){
       	echo "您访问的操作方法不存在!";
       } 
    }
    

      (2) dtyz.html页面:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<!--引入js-->
    		<script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script>
    	</head>
    	<body>
    		<form action="__ACTION__" method="post">
    		<div> 用户名:<input type="text" name="uid" id="uid"><span id="ts"></span></div>			
    		<input type="submit" value="验证" />
    		</form>
    	</body>
    	<script>
    		//文本框失去焦点时,显示提示信息
    		$("#uid").blur(function(){
    			var uid = $(this).val();
    			$.ajax({
    				url:"__ACTION__",
    				data:{uid:uid},
    				type:"POST",
    				dataType:"TEXT",
    				success:function(data){
    					alert(data);
    					 if(data.trim()=="OK")
    					 {
    					 	$("#ts").html("验证通过!");
    					 }else{
    					 	$("#ts").html("用户名不能为空!");
    					 }
    				}
    			});
    		})
    	</script>
    </html>
    

      看一下效果:

    当文本框失去焦点时:

    当文本框有内容时,再失去焦点:

  • 相关阅读:
    快过年了,博客园里的文章也变少了
    IP格式检查、IP INT 转换
    ip地址与数字相互转换的sql函数 [ZT]
    SQL Server 2005 TSQL的增強功能 [ZT]
    清除某个数据库的所有数据库连接的存储过程 [ZT]
    C# 3.0新特性
    C#中的委托和事件 [ZT]
    C# 各种进制之间相互转换 [ZT]
    升级到Visual Studio 2008的10个技巧[转]
    ASP.NET备份恢复SqlServer数据库 [ZT]
  • 原文地址:https://www.cnblogs.com/chenguanai/p/7141031.html
Copyright © 2011-2022 走看看