php---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>
看一下效果:

当文本框失去焦点时:

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

php---tp框架---表单验证的更多相关文章
- tp框架表单验证
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册“自动验证”一章. 一.静态验证 ( ...
- 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'); 在控制 ...
随机推荐
- 回归-LDA与QDA
作者:桂. 时间:2017-05-23 06:37:31 链接:http://www.cnblogs.com/xingshansi/p/6892317.html 前言 仍然是python库函数sci ...
- Http学习之使用HttpURLConnection发送post和get请求(3)
使用HttpURLConnection发送post和get请求 但我们常常会碰到这样一种情况: 通过HttpURLConnection来模拟模拟用户登录Web服务器,服务器使用cookie进行用户认证 ...
- LINQ基础(三)
一.并行LINQ System.Linq名称空间中包含的类ParallelEnumerable可以分解查询的工作,使其分布在多个线程上. 尽管Enumerable类给IEnumerable<T& ...
- Windows、Office系列产品精华部分集锦
提示 有了这个帖子麻麻再也不用担心我因为四处找Microsoft家的软件和系统而四处劳累所烦恼了! 首先,你们最爱的老XP同志,XP同志虽然退休了,但是依然坚持在岗位上,向他致敬!! Windows ...
- Dede CMS如何在文章中增加“附件下载”操作说明
1.进入后台--在"附件管理"中选择"上传新文件" 2.在"说明标题"输入要上传文件的名字,并在下面浏览找到要上传的文件,保存. 3.在&q ...
- htm语言的语法基础及规则
HTML的主要语法是元素和标签.元素是符合DTD(文档类型定义)的文档组成部分,如title(文档标题).IMG(图象).table(表格)等等.元素名不区分大小写的.HTML用标签来规定元素的属性和 ...
- python之路第一篇
一.python环境的搭建 1.window下环境的搭建 (1).在 https://www.python.org/downloads/ 下载自己系统所需要的python版本 (2).安装python ...
- ocr智能图文识别 tess4j 图文,验证码识别 分享及所遇到的问题
自己对tess4j的使用总结 1,tess4j 封装了 tesseract-ocr 的操作 可以用很简洁的几行代码就实现原本tesseract-ocr 复杂的实现逻辑 如果你也想了解tesseract ...
- iframe实现自适应高度
代码简单,兼容性还可以 <script>function SetWinHeight(obj) { var win=obj; if (document.getElementById) ...
- android进入adb shell步骤及修改sqlite数据库文件的权限
1 准备工作 (1)将adb.exe从 \Sdk\platform-tools目录下移动到 \Sdk\tools目录下(主要是看emulator这几个文件在哪个文件夹就把adb.exe移动到哪个文件 ...