我使用 codeigniter 框架创建了一个登录页面
在我创建的models
文件夹中
login_model.php
class Login_model extends CI_Model
{ //CI version 3.0
function validate_login()
{
$this->db->where('username', $this->input->post('username'));//this is form username
$this->db->where('password', md5($this->input->post('password')));//this is form password
$query = $this->db->get('membership'); //database autoloaded
if($query->num_rows == 1)
{
return true;
}
}
}
我认为这之后一切都很好
在我创建的controllers
文件夹中
login_control.php
class Login_control extends CI_Controller
{
function index()
{
$data['main_content'] = 'login_view';
$this->load->view('includes/template', $data);
}
function validate_credential() {
$this->load->model('login_model');
$query = $this->login_model->validate_login();
//redirect('logged_site/members_area');
if($query)//if user credential validate!. run following events
{
$newdata = array(
'username' => $this->input->post('username'),
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
redirect('logged_site/members_area');
}
else
{
$this->index();
}
}
}
此处如果我直接重定向到members_area
页面,则其工作方式如下
redirect('logged_site/members_area');
在上面的评论后,我使用if/else
条件来验证查询但在此条件编码后没有重定向到指定页面并且没有任何错误只是停留在$this->index();
else
页面中一部分。
我帮我错了吗?
答案 0 :(得分:1)
您的模型validate_login()
变化:
if($query->num_rows == 1)
要:
if($query->num_rows() == 1)
答案 1 :(得分:0)
喜欢这个
在控制器中
if($query == true) # check true
{
$newdata = array(
'username' => $this->input->post('username'),
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
redirect('logged_site/members_area');
}
else
{
$this->index();
}
在模型中
class Login_model extends CI_Model
{
function validate_login()
{
$this->db->where('username', $this->input->post('username'));//this is form username
$this->db->where('password', md5($this->input->post('password')));//this is form password
$query = $this->db->get('membership'); //database autoloaded
$result = $query->result_array();
$count = count($result) # add
if($count == 1) #changed
{
return true;
}
else
{
return false;
}
}
}