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'); 在控制 ...
随机推荐
- Fragment回调接口应用间分享数据
package com.example.mydemo; import java.util.List; import android.app.Activity; import android.app.A ...
- js 高级算法 - 动态规划
主要是看了<数据结构与算法>有所感悟,虽然这本书被挺多人诟病的,说这有漏洞那有漏洞,但并不妨碍我们从中学习知识. 其实像在我们前端的开发中,用到的高级算法并不多,大部分情况if语句,for ...
- root用户不能修改iptable文件
问题: 需要放通IP 端口 执行: vi /etc/sysconfig/iptables, 添加完成后,wq保存,提示文件只读无法保存!!! 解决步骤: 1.查看文件权限 ls -ld /etc/ ...
- 外部无法捕捉Realm的doGetAuthenticationInfo方法抛出的异常
shiro权限框架,用户登录方法的subject.login(token)会进入自定义的UserNamePasswordRealm类的doGetAuthenticationInfo身份验证方法 通常情 ...
- awk之随机函数rand()和srand() (转)
转自:http://blog.chinaunix.net/uid-10540984-id-2942041.html 文件: 1234567 abcdefg ...... 现在想要随机抽取5列组成下 ...
- Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列
一.水仙花数 1.啥是水仙花数? 水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 2.利用JS实现对水 ...
- HTML表格表单综合——用户注册表
今天学习了表格和表单知识,我综合了他们添加了一些拓展知识做了一个用户注册表,以下面代码来整理表格和表单知识: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...
- Kafka.net使用编程入门(四)
新建一个cmd窗口,zkServer命令启动zookeeper 打开另一个cmd窗口,输入: cd D:\Worksoftware\Apachekafka2.11\bin\windows kafka- ...
- (转)wxWidgets 2.9.2svn(3.x)最小体积编译方法
官方论坛.网上记录的wxWidgets编译方法,会导致编译后的程序库非常大,原因在于对编译的方法选择不当.下面简单总结一下如何编译最新的SVN代码.下载最新源码(每日构建):http://biolpc ...
- Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
http://blog.csdn.net/u013142781/article/details/50380920