tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。分为静态验证和动态验证。
关于基础知识,请查看手册“自动验证”一章。
一、静态验证
(1)在Ceshi/Controller/路径下新建Yanzheng控制器。

YanzhengController.class.php页面
注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型
create方法是对表单提交的POST数据进行自动验证
<?php
namespace Ceshi\Controller;
use Think\Controller;
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 Ceshi\Model;
use Think\Model;
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 Ceshi\Controller;
use Think\Controller;
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>
看一下效果:

当文本框失去焦点时:

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

tp框架---表单验证的更多相关文章
- tp框架表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架表单提交注意!不要提交到当前方法
tp框架 表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.
- ThinkPHP框架表单验证
对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供 ...
- php--yii框架表单验证
在视图层利用表单小部件生成表单时,field只能是数据库中存在的, 例如: use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\capt ...
- ThinkPHP框架表单验证AJAX
验证有两种方式:静态验证与动态验证. 一.静态验证 在模型类里面预先定义好该模型的自动验证规则,我们称为静态定义. 验证时要在test表的Model里面加验证条件:新建testModel.class. ...
- Yii 框架表单验证---实例
- laravel框架——表单验证
创建路由 Route::get('test','VerController@index'); Route::post('tosubmit','VerController@tosubmit'); 在控制 ...
- php---tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册"自动验证"一章 ...
随机推荐
- react基础篇六
创建 Refs 使用 React.createRef() 创建 refs,通过 ref 属性来获得 React 元素.当构造组件时,refs 通常被赋值给实例的一个属性,这样你可以在组件中任意一处使用 ...
- POJ_2186_Popular Cows_强连通分量
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30680 Accepted: 12445 De ...
- 切换原生appium里面H5页面
#coding = utf-8from appium import webdriverimport time'''1.手机类型2.版本3.手机的唯一标识 deviceName4.app 包名appPa ...
- HAOI2010软件安装(树形背包)
HAOI2010软件安装(树形背包) 题意 有n个物品,每个物品最多会依赖一个物品,但一个物品可以依赖于一个不独立(依赖于其它物品)的物品,且可能有多个物品依赖一个物品,并且依赖关系可能形成一个环.现 ...
- [tyvj1935 Poetize3]导弹防御塔 (二分图多重匹配)
传送门 Description Freda控制着N座可以发射导弹的防御塔.每座塔都有足够数量的导弹,但是每座塔每次只能发射一枚.在发射导弹时,导弹需要T1秒才能从防御塔中射出,而在发射导弹后,发射这枚 ...
- cent OS官网上下载老版本系统镜像的正确打开方式
当时的情况是这样的: 客户需要给服务器安装cent OS 7.3操作系统,我打开官网https://www.centos.org/,点击“GET CENTOS”——>“Minimal ISO”, ...
- Problem 48
Problem 48 The series, 11 + 22 + 33 + ... + 1010 = 10405071317. Find the last ten digits of the seri ...
- web开发如何使用高德地图API(二)结合输入提示和POI搜索插件
说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...
- Redis参数
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: Redis::__construct构造函数$redis ...
- SCVMM-VMWARE ACE虚拟机管理工具
SCVMM是微软的虚拟化管理工具 VMWARE ACE是另一套虚拟化的工具 这两套工具都是用来管理虚拟机的,可以直接将物理机虚拟化为虚拟机 企业一旦发展到了一定阶段,并然需要自己的服务器和虚拟化环境, ...