• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ThinkPhp框架表单验证及ajax验证实例详解

php 搞代码 3年前 (2022-01-22) 19次浏览 已收录 0个评论

tp数据验证有两种方式,一种是静态方式,一种是动态方式,之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降。 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。验证的代码要写在模型层即Model里面。

数据验证有两种方式:

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

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

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

<?phpnamespace 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"><p>用户名:<input type="text" name="uid" /></p><p>密码:<input type="text" name="pwd" /></p><p>确认密码:<input type="text" name="pwd1" /></p><p>姓名:<input type="text" name="name" /></p><p>邮箱:<input type="text" name="email" /></p><p>年龄:<input type="text" name="age" /></p><p><input type="submit" value="提交" /></p></form></p&g<span>!本文来源gaodai#ma#com搞*!代#%^码网5</span><pre>搞gaodaima代码

t;</body></html>

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

<?phpnamespace 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里面写方法

<?phpnamespace 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">    <p>用户名:<input type="text" name="uid" /></p>    <p>密码:<input type="text" name="pwd" /></p>    <p>确认密码:<input type="text" name="pwd1" /></p>    <p>姓名:<input type="text" name="name" /></p>    <p>邮箱:<input type="text" name="email" /></p>    <p>年龄:<input type="text" name="age" /></p>    <p><input type="submit" value="提交" /></p>  </form></body><script type="text/javascript"></script></html>

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

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

三、Ajax做验证

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

1.写显示和ajax处理方法

<?phpnamespace 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>    <p>用户名:<input id="uid" type="text" name="uid" /></p>    <p><input id="btn" type="button" value="验证" /></p></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>

相关推荐:

PHP用户验证 PHP+Ajax验证码验证用户登录

Ajax验证用户名实例代码

ajax验证用户名和密码,ajax验证用户名_PHP教程

以上就是ThinkPhp框架表单验证及ajax验证实例详解的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ThinkPhp框架表单验证及ajax验证实例详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址