全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

关于ThinkPhp 框架表单验证及ajax验证问题

之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降。 

  自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。验证的代码要写在模型层即Model里面。

  数据验证有两种方式:

静态方式:在模型类里面通过$_validate属性定义验证规则。静态方式定义好以后其它地方都可以使用。

动态方式:使用模型类的validate方法动态创建自动验证规则。动态方式比较灵活,哪里使用就写,其它地方不可以使用。

无论是什么方式,验证规则的定义是统一的规则,定义格式为:

<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller
{
public function add()
{
if(empty($_POST))
{ 
$this->show();
}
else
{ 
$y=new \Home\Model\YongHuuModel();
$r=$y->create();
if($r)
{
$y->add(); 
}
else{
die($y->getError());
}
}
} 
}

2.在thinkphp\Application\Home\View\Test写上对应的html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<style type="text/css">
*{ font-family:微软雅黑; padding:0px; margin:0px auto}
</style>
<body>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="text" name="pwd" /></div>
<div>确认密码:<input type="text" name="pwd1" /></div>
<div>姓名:<input type="text" name="name" /></div>
<div>邮箱:<input type="text" name="email" /></div>
<div>年龄:<input type="text" name="age" /></div>
<div><input type="submit" value="提交" /></div>
</form>
</div>
</body>
</html>

3.在thinkphp\Application\Home\Model里面写模型文件,也就是验证的方法。

<?php
namespace Home\Model;
use Think\Model;
class YongHuuModel extends Model
{
protected $tablePrefix = "";
protected $trueTableName = 'yonghuu'; //真实表名
//protected $patchValidate = true;
protected $_validate = array(
array('uid','require','用户名不能为空!'),
array('pwd','pwd1','两次输入的密码不一致!',0,'confirm'), //两个字段是否相同
array('email','email','邮箱格式不正确'),
array('name','/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/','身份证号不正确!',0,'regex'),
array('age','18,50','年龄不在范围内',0,'between'),
);
}

二、动态验证

1.在Application\Home\Controller里面写方法

<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller
{
  public function add()
  {
    if(empty($_POST))//如果post数组为空
    {
      $this->show();//显示add.html页面
    }
    else//如果post数组不为空
    {
      $y = D("YongHu");
      $arr = array(//动态验证就是需要在哪验证就在哪里写验证方法。
        array("uid","require","用户名不能为空",0),//讲验证的方法写在方法里面
      );
      if($y->validate($arr)->create())//这里要先调用validate方法,然后将写的验证方法放到validate里面
      {
        $y->add();
      }
      else
      {
        die($y->getError());
      }
    }
  }
}

2.在thinkphp\Application\Home\View\Test写上对应的html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
</style>
</head>
<body>
  <form action="__ACTION__" method="post">
    <div>用户名:<input type="text" name="uid" /></div>
    <div>密码:<input type="text" name="pwd" /></div>
    <div>确认密码:<input type="text" name="pwd1" /></div>
    <div>姓名:<input type="text" name="name" /></div>
    <div>邮箱:<input type="text" name="email" /></div>
    <div>年龄:<input type="text" name="age" /></div>
    <div><input type="submit" value="提交" /></div>
  </form>
</body>
<script type="text/javascript">
</script>
</html>

3.在thinkphp\Application\Home\Model里面写模型文件。

<?php
namespace Home\Model;
use Think\Model;
class YongHuModel extends Model
{
  protected $tablePrefix = "";//表示表格前缀为空,就是没有前缀。
  protected $trueTableName = "yonghu";//如果不写这句话,会自动去找Yong_Hu这张表,这是默认的表格的命名。这里要写上实际的表格的名字。
}

三、Ajax做验证

tp动态验证和静态验证都有一个很大的缺点,那就是在提示错误信息的时候都要跳转到其它页面显示出错误信息。如果需要在当前页面显示出错误信息,就需要用ajax做验证。

1.写显示和ajax处理方法

<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller
{
  public function tianjia()//添加方法,用来显示页面
  {
    $this->show();
  }
  public function test()//ajax处理方法
  {
    $y = D("YongHu");
    $arr = array(//动态验证就是需要在哪验证就在哪里写验证方法。
        array("uid","require","用户名不能为空"),//讲验证的方法写在方法里面
      );
    if($y->validate($arr)->create())//这里要先调用validate方法,然后将写的验证方法放到validate里面
      {
        $this->ajaxReturn("通过验证","eval");
      }
      else
      {
        $this->ajaxReturn($y->getError(),"eval");
      }
  }
}

2.写显示页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script>
<title>无标题文档</title>
<style type="text/css">
</style>
</head>
<body>
    <div>用户名:<input id="uid" type="text" name="uid" /></div>
    <div><input id="btn" type="button" value="验证" /></div>
</body>
<script type="text/javascript">
  $("#btn").click(function(){
      var uid = $("#uid").val();
      $.ajax({
        url:"__CONTROLLER__/test",
        data:{uid:uid},
        type:"POST",
        dataType:"TEXT",
        success: function(data){
            alert(data);
          }        
        })
    })
</script>
</html>

总结

以上所述是小编给大家介绍的关于ThinkPhp 框架表单验证及ajax,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# tp框架表单验证  # ajax验证  # tp框架ajax  # ThinkPHP框架安全实现分析  # thinkphp微信开之安全模式消息加密解密不成功的解决办法  # thinkphp5.1框架容器与依赖注入实例分析  # 对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析  # ThinkPHP表单自动提交验证实例教程  # thinkPHP实现表单自动验证  # ThinkPHP表单自动验证实例  # Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册  # ThinkPHP框架表单验证操作方法  # ThinkPHP 表单自动验证运用示例  # thinkPHP自动验证、自动添加及表单错误问题分析  # ThinkPHP中create()方法自动验证表单信息  # TP5框架安全机制实例分析  # 为空  # 错误信息  # 就在  # 无标题文档  # 可以使用  # 要先  # 表单  # 写在  # 不正确  # 写上  # 小编  # 要写  # 都是  # 这是  # 就会  # 是在  # 都有  # 那就  # 都要  # 在此 


相关文章: 建站之星如何开启自定义404页面避免用户流失?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  简单实现Android验证码  打鱼网站制作软件,波克捕鱼官方号怎么注册?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  在线制作视频的网站有哪些,电脑如何制作视频短片?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  建站主机CVM配置优化、SEO策略与性能提升指南  如何在阿里云高效完成企业建站全流程?  教学网站制作软件,学习*后期制作的网站有哪些?  如何批量查询域名的建站时间记录?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  宁波自助建站系统如何快速打造专业企业网站?  ,制作一个手机app网站要多少钱?  如何通过智能用户系统一键生成高效建站方案?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何在Windows环境下新建FTP站点并设置权限?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  seo网站制作优化,网站SEO优化步骤有哪些?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  中山网站推广排名,中山信息港登录入口?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  ,sp开头的版面叫什么?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  制作企业网站建设方案,怎样建设一个公司网站?  在线教育网站制作平台,山西立德教育官网?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Java解压缩zip - 解压缩多个文件或文件夹实例  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何选购建站域名与空间?自助平台全解析  如何在Golang中使用replace替换模块_指定本地或远程路径  建站之星下载版如何获取与安装?  建站主机系统SEO优化与智能配置核心关键词操作指南  建站主机如何选?高性价比方案全解析  香港服务器建站指南:免备案优势与SEO优化技巧全解析  专业网站建设制作报价,网页设计制作要考什么证?  建站OpenVZ教程与优化策略:配置指南与性能提升  php json中文编码为null的解决办法  如何在腾讯云服务器快速搭建个人网站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在Golang中处理模块冲突_解决依赖版本不兼容问题 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。