在我的codeigniter项目中,单击登录按钮时,它不会重定向到用户主页。但对我的客户来说,它运作良好。
当我使用print_r($query)
时,它会显示以下错误:
CI_DB_mysql_result对象([conn_id] =>资源ID#32 [result_id] =>资源ID#38> [result_array] => Array()[result_object] => Array()[current_row] = > 0 [num_rows] => 0 [row_data] =>)
我在代码的末尾尝试了result()
,但它仍然无效。我该如何解决这个问题?
我的控制器代码如下:
<?php
class Main extends Controller {
function Main()
{
parent::Controller();
}
function index()
{
$errMsg = '' ;
if($this->input->post('adminUsername') && $this->input->post('adminPassword')){
$user_name = $this->input->post('adminUsername');
$pass_word = base64_encode($this->input->post('adminPassword'));
$query=$this->db->get_where('gm_adminusers',array('adminUsername'=>$user_name,'adminPassword'=>$pass_word,'admin_status'=>'A'));
print_r($query);
if ($query->num_rows() > 0)
{
$arrRow =$query->row_array();
$newdata = array(
'sess_adminId' =>$arrRow['adminId'],
);
$this->db_session->set_userdata($newdata);
if($this->db_session->userdata('sess_adminId')){
redirect('user/home');
}
else{
$errMsg ='<span style="color:red">Login Error :Please Check Your input.</span>';
/*redirect('user/home'); */
}
}else{
$errMsg ='<span style="color:red">Critical Error:Contact Your Administrator</span>';
}
}
$data['errMsg'] = $errMsg;
$this->load->view('header');
$this->load->view('index',$data);
$this->load->view('footer');
}
答案 0 :(得分:1)
返回0行不是“错误”。这是对有效MySQL查询的有效响应。为什么查询返回0行?因为用户名和密码不匹配。
我假设您输入123456
作为密码。无论你怎么努力,当你做base64_encode('123456')
时,你都不会得到123456
。
您需要做的是删除base64_encode
并将其替换为真正的密码解决方案。 PHP 5.5有一个内置的(http://www.php.net/manual/en/ref.password.php) 1 。
显然,您需要在数据库中重新保存所有密码。另外,请确保以相同的格式存储它们。您目前有一个明文,另一个是base64。
1如果您没有PHP 5.5,可以试试这个:https://github.com/ircmaxell/password_compat