我最近将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;
}
我在这里做错了什么?