博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CI表单验证
阅读量:6169 次
发布时间:2019-06-21

本文共 3605 字,大约阅读时间需要 12 分钟。

一、CodeIgniter允许你为单个表单域创建多个验证规则,按顺序层叠在一起,你甚至可以同时预先处理表单域数据。要设置验证规则请使用set_rules() 函数:

上面的函数使用 三个 参数作为输入:

  1. 表单域的名字 - 就是你给表单域取的那个名字。
  2. 一个此表单域的 "人性化" 名字,它将被插入到错误信息中。例如,如果你有一个表单域叫做“user”你可能给它一个人性化名字叫做“用户名”。 注意: 如果你想让表单域的名字保存在一个语言文件里。
  3. 为此表单域设置的验证规则。
$this->form_validation->set_rules('username', 'Username', 'required');$this->form_validation->set_rules('password', 'Password', 'required');$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');$this->form_validation->set_rules('email', 'Email', 'required');

上面是一段示例代码。

load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'required'); $this->form_validation->set_rules('password', 'Password', 'required'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); } }}?>

控制器的内容如上。

二、使用数组设置验证规则:

$config = array(               array(                     'field'   => 'username',                      'label'   => 'Username',                      'rules'   => 'required'                  ),               array(                     'field'   => 'password',                      'label'   => 'Password',                      'rules'   => 'required'                  ),               array(                     'field'   => 'passconf',                      'label'   => 'Password Confirmation',                      'rules'   => 'required'                  ),                  array(                     'field'   => 'email',                      'label'   => 'Email',                      'rules'   => 'required'                  )            );$this->form_validation->set_rules($config);

 

三、级联规则:

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');$this->form_validation->set_rules('email', 'Email', 'required|valid_email');

上面的代码设置了一组规则:

  1. 用户名表单域长度不得小于5个字符以及大于12个字符。
  2. 密码表单域必须跟密码确认表单域的数据一致。
  3. 电子邮件表单域必须是一个有效邮件地址。

四、预处理数据

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');$this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

在上面的例子里,我们“修整(trimming,去掉字符串两端空白)”了数据,转换密码为MD5,将用户名通过“xss_clean”函数处理去掉了有害数据。

任何PHP自身接收一个参数的函数都可以被用作一个规则,比如 htmlspecialchars, trim, MD5, 等。

 

五、重新填充表单

set_value('field name')

不要忘记在set_value()函数中包含每个表单域的名字!

My Form
Username
Password
Password Confirm
Email Address

六、设置错误信息

$this->form_validation->set_message('rule', 'Error Message');

你也可以重写语言文件中的错误信息. 例如, 你可以这么做来改变"required" 规则的信息:

$this->form_validation->set_message('required', 'Your custom message here');

 

七、更改错误定界符

在默认情况下,表单验证类会使用 (<p>) 标签来分割每条错误信息,以达到分段效果。你可以自行对其进行定义。

  1. 定界符统一更改

    如果需要全局更改错误定界符, 可以在你的控制器中,在表单验证类加载之后添加如下代码:

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    在此例中,我们将定界符由系统默认的 <p> 更改为一个div标签。

  2. 定界符单独更改

    表单验证类所提供的两种显示错误验证信息的函数,分别可以通过如下方法来设置它们的定界符:

    <?php echo form_error('field name', '<div class="error">', '</div>'); ?>

    或者:

    <?php echo validation_errors('<div class="error">', '</div>'); ?>

 

 

转载地址:http://fljba.baihongyu.com/

你可能感兴趣的文章
Subversion版本控制
查看>>
奇怪的打印纸盘故障
查看>>
hyperledger v1.0.5 区块链运维入门(一)
查看>>
Mybatis-mapper-xml-基础
查看>>
5. GC 调优(基础篇) - GC参考手册
查看>>
Windows 7 XP 模式颜色质量只有16位的解决
查看>>
SonicWall如何安全模式升级防火墙
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
从Atlas到Microsoft ASP.NET AJAX(6) - Networking, Application Services
查看>>
成长之路---写好一个类
查看>>
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>
对做“互联网产品”的一些想法
查看>>
SPI协议及其工作原理浅析【转】
查看>>
原生js编写的安全色拾色器
查看>>
iOS:VFL语言
查看>>
让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
查看>>
用scikit-learn学习DBSCAN聚类
查看>>