CI框架表单验证

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

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

  表单域的名字 - 就是你给表单域取的那个名字。

  一个此表单域的 "人性化" 名字,它将被插入到错误信息中。例如,如果你有一个表单域叫做“user”你可能给它一个人性化名字叫做“用户名”。 注意: 如果你想让表单域的名字保存在一个语言文件里。

  为此表单域设置的验证规则。

  $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');

  上面是一段示例代码。

  


  

<?php
  class Form extends CI_Controller {
  function index()
  {
  $this->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');

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

  用户名表单域长度不得小于5个字符以及大于12个字符。

  密码表单域必须跟密码确认表单域的数据一致。

  电子邮件表单域必须是一个有效邮件地址。

  四、预处理数据

  $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()函数中包含每个表单域的名字!

  


 

 <html>
  <head>
  <title>My Form</title>
  </head>
  <body>
  <?php echo validation_errors(); ?>
  <?php echo form_open('form'); ?>
  <h5>Username</h5>
  <input type="text" name="username" value="<?php echo 
set_value('username'); ?>" size="50" />
  <h5>Password</h5>
  <input type="text" name="password" value="<?php echo 
set_value('password'); ?>" size="50" />
  <h5>Password Confirm</h5>
  <input type="text" name="passconf" value="<?php echo 
set_value('passconf'); ?>" size="50" />
  <h5>Email Address</h5>
  <input type="text" name="email" value="<?php echo set_value('email'); 
?>" size="50" />
  <div><input type="submit" value="Submit" /></div>
  </form>
  </body>
  </html>
  


  六、设置错误信息

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

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

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

  七、更改错误定界符

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

  定界符统一更改

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

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

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

  定界符单独更改

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

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

  或者:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值