为什么我的回调表单验证功能不起作用?

时间:2017-10-31 12:32:17

标签: php codeigniter continuous-integration hmvc

我最近将CI升级到3.1.6并使用HMVC。

使用我的上一个CI版本(仅限MVC),回调效果很好。但现在回调似乎无法奏效。例如,即使输入正确的密码,它仍会显示错误消息。

这是我的控制器:(自动加载的库和帮助程序)

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends MX_Controller {
function __construct(){
    parent::__construct();
    $this->load->model('m_login');
    $this->load->model('m_profile');    
}
public function index()
{
    $this->load->view('login');
}
public function loginPage(){        
    $this->load->view('login');
}
//---validasi login---
function loginAction(){
    $username = $this->input->post('username');
    $password = $this->input->post('password');

    $this->form_validation->set_rules('username', 'Username', 'trim|alpha_dash|required|min_length[5]|max_length[18]',
            array(
                    'min_length'      => '%s anda kurang dari 5 karakter',
                    'alpha_dash' => '%s anda mengandung karakter yang tidak diizinkan'
            )
    );
    $this->form_validation->set_rules('password', 'Password', 'required|min_length[8]|max_length[20]|callback_password_check',
            array(
                'min_length' => '%s anda kurang dari 8 karakter',
                'password_check' => '%s anda harus mengandung huruf dan angka',
                'max_length' => '%s maximal berjumlah 20 karakter'
            )
    );

    if ($this->form_validation->run() == FALSE)
            {
    $this->load->view('login');
            }
            else
            {
    $where = array(
        'username' => $username,
        'password' => md5($password)
    );

    $cek = $this->m_login->cek_login("user_pb",$where)->num_rows();
    if($cek > 0){
        $data_session = array(
            'nama' => $username,
            'status' => "login"
            );

        $this->session->set_userdata($data_session);

        redirect(base_url("admin/admin_page"));
    }else{      
        print "<script type=\"text/javascript\">alert('Username atau password salah!');</script>";
        $this->load->view('login');         
    }
    }
} 

这里是我的回调函数,在loginAction下面:

public function password_check($str)
    {
       if (preg_match('#[0-9]#', $str) && preg_match('#[a-zA-Z]#', $str)) {
         return TRUE;
       }
       return TRUE;
    }

我在这里做错了什么?

0 个答案:

没有答案