CI表單驗證

 

1、CodeIgniter容許你爲單個表單域建立多個驗證規則,按順序層疊在一塊兒,你甚至能夠同時預先處理表單域數據。要設置驗證規則請使用set_rules() 函數:php

上面的函數使用 三個 參數做爲輸入:html

  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');
  }
 }
}
?>
複製代碼

控制器的內容如上。xss

2、使用數組設置驗證規則:函數

複製代碼
$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); 
複製代碼

 

3、級聯規則:post

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

上面的代碼設置了一組規則:ui

  1. 用戶名錶單域長度不得小於5個字符以及大於12個字符。
  2. 密碼錶單域必須跟密碼確認表單域的數據一致。
  3. 電子郵件表單域必須是一個有效郵件地址。

4、預處理數據this

$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」函數處理去掉了有害數據。url

任何PHP自身接收一個參數的函數均可以被用做一個規則,好比 htmlspecialcharstrimMD5, 等。spa

 

5、從新填充表單

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>
複製代碼

6、設置錯誤信息

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

你也能夠重寫語言文件中的錯誤信息. 例如, 你能夠這麼作來改變"required" 規則的信息:

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

 

7、更改錯誤定界符

在默認狀況下,表單驗證類會使用 (<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>'); ?>
相關文章
相關標籤/搜索