首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

CodeIgniter 表單驗證庫完整實戰指南:規則設置、錯誤提示、回填、自定義驗證

     編輯:PHP 綜合知識

視圖:表單結構

<?= form_open('user/register', ['class' => 'form-horizontal', 'id' => 'regForm']) ?>
    <?= validation_errors('
', '
') ?> <div class="form-group"> <label>用戶名</label> <input type="text" name="username" class="form-control" value="<?= set_value('username') ?>"> <?= form_error('username', '', '') ?> </div> <div class="form-group"> <label>郵箱</label> <input type="email" name="email" class="form-control" value="<?= set_value('email') ?>"> <?= form_error('email', '', '') ?> </div> <div class="form-group"> <label>密碼</label> <input type="password" name="password" class="form-control"> <?= form_error('password', '', '') ?> </div> <div class="form-group"> <label>確認密碼</label> <input type="password" name="passconf" class="form-control"> <?= form_error('passconf', '', '') ?> </div> <button type="submit" class="btn btn-primary">註冊</button> </form>

控制器:驗證邏輯

public function register() {
    $this->load->library('form_validation');
    $this->load->helper(['form', 'url']);

    // 1. 設置規則(推薦數組批量設置)
    $config = [
        [
            'field' => 'username',
            'label' => '用戶名',
            'rules' => 'trim|required|min_length[3]|max_length[20]|alpha_numeric|is_unique[users.username]'
        ],
        [
            'field' => 'email',
            'label' => '郵箱',
            'rules' => 'trim|required|valid_email|is_unique[users.email]'
        ],
        [
            'field' => 'password',
            'label' => '密碼',
            'rules' => 'trim|required|min_length[8]|max_length[72]'
        ],
        [
            'field' => 'passconf',
            'label' => '確認密碼',
            'rules' => 'trim|required|matches[password]'
        ],
    ];
    $this->form_validation->set_rules($config);

    // 2. 自定義錯誤消息
    $this->form_validation->set_message('is_unique', '{field} 已被註冊');
    $this->form_validation->set_message('matches', '{field} 與 {param} 不一致');

    // 3. 自定義錯誤定界符(全局)
    $this->form_validation->set_error_delimiters('', '');

    // 4. 運行驗證
    if ($this->form_validation->run() === FALSE) {
        $this->load->view('user/register');
        return;
    }

    // 5. 驗證通過,業務處理
    $data = [
        'username' => $this->input->post('username', true),
        'email' => $this->input->post('email', true),
        'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT),
    ];
    $this->User_model->register($data);

    $this->session->set_flashdata('success', '註冊成功,請登錄');
    redirect('user/login');
}

常用驗證規則速查

自定義回調驗證

// 控制器中
$this->form_validation->set_rules('invite_code', '邀請碼', 'trim|required|callback_check_invite');

// 回調方法(必須 public,返回 bool)
public function check_invite($code) {
    $valid = $this->Invite_model->verify($code);
    if (!$valid) {
        $this->form_validation->set_message('check_invite', '邀請碼無效或已過期');
        return false;
    }
    return true;
}

最佳實踐建議

  • 規則集提取到 application/config/form_validation.php 實現複用。
  • 使用 set_value() 回填,配合 set_select()、set_checkbox()、set_radio() 處理下拉/複選/單選。
  • 密碼字段驗證長度即可,不要 用 md5 等弱哈希規則,入庫時用 password_hash()。
  • 生產環境關閉 debug,錯誤消息僅顯示用戶友好提示,詳細日誌寫入文件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
規則說明示例
required非空required
min_length[n]最小長度min_length[6]
max_length[n]最大長度max_length[20]
exact_length[n]固定長度exact_length[11]
alpha僅字母alpha
alpha_numeric字母數字alpha_numeric
valid_email郵箱格式valid_email
valid_ipIP 格式valid_ip
numeric純數字numeric
integer整數integer
decimal小數decimal
is_unique[table.col]數據庫唯一is_unique[users.email]
matches[field]與某字段匹配matches[password]
callback_func自定義回調callback_check_invitation