码迷,mamicode.com
首页 > 其他好文 > 详细

CI表单验证

时间:2015-05-07 15:58:59      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

一、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);

上面是一段示例代码。

技术分享
<?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);

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

  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自身接收一个参数的函数都可以被用作一个规则,比如 htmlspecialcharstrimMD5, 等。

 

五、重新填充表单

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>) 标签来分割每条错误信息,以达到分段效果。你可以自行对其进行定义。

  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>‘); ?>

 


 


来自为知笔记(Wiz)


CI表单验证

标签:

原文地址:http://www.cnblogs.com/muxiaoye/p/cec5e4bb836d63aceb4576031f0da14c.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!