我正在尝试使用CodeIgniter和REST控制器(https://github.com/philsturgeon/codeigniter-restclient)创建登录脚本;我一直从模型中得到一个空响应
这是我的模特函数
public function login($data)
{
$checkEmail = $this->db->get_where('users', array('email' => $data['email']));
$emailRow = $checkEmail->row();
if(isset($emailRow)) {
if (password_verify($data['password'], $emailRow->password)) {
return $emailRow->id;
} else {
return false;
}
} else {
return false;
}
}
这是我的控制器
public function login_post()
{
$this->load->model('User_model');
$data = $this->_post_args;
if($this->form_validation->run() === FALSE) {
//does some unnecessary stuff thats pointless showing
$this->set_response([
'status' => FALSE,
'error' => $error
], REST_Controller::HTTP_BAD_REQUEST);
} else {
$login = $this->User_model->login($data);
if($login === TRUE) {
$user = $this->User_model->getUser($login);
$this->set_response([
'status' => TRUE,
'user' => $user
], REST_Controller::HTTP_ACCEPTED);
} else {
$this->set_response([
'status' => FALSE,
'error' => 'Nope'
], REST_Controller::HTTP_BAD_REQUEST);
}
}
}
每次我运行这个,我得到'nope'错误消息,$login
如果我var_dump它返回为null?有人有任何想法吗?
答案 0 :(得分:1)
在您的控制器中,您正在检查:
if($login === TRUE) {
不幸的是,对于您的控制器,模型将从不返回TRUE
,因此您的代码每次都会落入else{}
块。
您的模型仅返回FALSE
或$emailRow->id
作为即时修复,您可以尝试:
if($login !== FALSE) {