Codeigniter / REST显示不正确的结果

时间:2017-01-19 15:30:21

标签: php codeigniter

我正在尝试使用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?有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

在您的控制器中,您正在检查:

if($login === TRUE) {

不幸的是,对于您的控制器,模型将从不返回TRUE,因此您的代码每次都会落入else{}块。

您的模型仅返回FALSE$emailRow->id

的值

作为即时修复,您可以尝试:

if($login !== FALSE) {