简单的thinkphp自动验证使用

博客讲述了作者在受到批评后,学习并应用ThinkPHP框架的自动验证功能,以增强网站数据验证的安全性。文中提到了验证的基本格式,并分享了一个简单的非空验证Model代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为网站没有做数据的后台验证,只做了前端的js验证,有的浏览器会直接跳过验证存储数据,被老师批评了,这两天学习了thinkphp的自动验证,在这里记录下。

首先验证的基本格式是:

                                 array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])

我在Model里建了一个和表名相同的Model,代码如下,只是简单的不为空验证,手册有其他验证的详细方法

<?php 
class Stu_jyModel extends Model {
    // 自动验证设置
    protected $_validate = array(//这里必须定义为$_validata用来验证
    array(
        'stu_cgcjxs',
        'require',
        '请选择出国出境形式(学习/工作)'),
    array(
        'stu_dwmc',
        'require',
        '<span style="color:red;">*</span>必填项不能为空'),
    array(
        'stu_dwzzjgdm',
        '/^([0-9A-Z]){8}[0-9|X]$/',
        '组织机构代码格式不对,请重新输入',
        2),
    array(
        'stu_dwxzdm',
        'require',
        '单位性质不能为空'),
    array(
        'stu_dwhydm',
        'require',
        '单位所属行业不能为空'),
    array(
        'stu_gzzwlbdm',
        'require',
        '工作职位不能为空'),
    array(
        'stu_dazjdz',
        'require',
        '档案转寄地址不能为空'),
    array(
        'stu_cgcjcllx',
        'require',
        '出国出境材料类型不能为空'),
    );
}
?>
接下来是Action里的代码,要对需要存储数据库的数据进行验证

    public function fdata1(){ 
      $data['stu_byqxdm']=$_SESSION['byqxid'];
      $data['stu_dwmc']=$this->_param('dwmc');
      $data['stu_dwzzjgdm']=$this->_param('zzjgdm');
      $data['stu_dwxzdm']=$this->_param('dwxz');
      $data['stu_dwhydm']=$this->_param('hyfl');
      $data['stu_gzzwlbdm']=$this->_param('zwlb');
      $data['stu_dwtxdz']=$this->_param('dwtxdz');
      $data['stu_dwlxr']=$this->_param('dwlxr');
      $data['stu_dwlxdh']=$this->_param('dwlxdh');
      $data['stu_dwdzxx']=$this->_param('dwdzxx');
      $data['stu_dwzzjgdm']=$this->_param('zzjgdm');
      if(I('dwxz')==40){
        $data['stu_dwzzjgdm']="";
      }else{
        if(I('zzjgdm')=="")
          $this->error('组织机构代码不能为空','',1);
      }
          //自动验证
      $Stu_jy=D("Stu_jy");
      if($Stu_jy->create($data)){
        //单位所在地代码 
        $data['stu_dwszddm']=$this->choosecity(I('locate'));
        $this->insert1($data);//调用方法,插入数据   
      }
      else{
        $this->error($Stu_jy->getError(),'',1);
      }
    }

这里验证的关键就是字段名必须要一致,先前在网上找的一直用不了,后来才发现是自己字段名不统一。如果不是用数组存储表单数据后再验证,而是表单提交过来直接验证的话就要注意表单的提交方式必须是post的,字段以标签的name为准,而我现在用的是get,不想改动太大,就只能这样了。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值