2017-01-19 10 views
0

CodeIgniterとRESTコントローラ(https://github.com/philsturgeon/codeigniter-restclient)を使用してログインスクリプトを作成しようとしていますが、私は、これはこれは私がこれを実行するCodeigniter/RESTが不正な結果を表示する

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); 

      } 

     } 
    } 

毎回私のコントローラである

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; 

     } 
    } 

私のモデル関数である私のモデルから

をヌル応答を得続ける、私は「ハズレ」のエラーメッセージを取得し、 $loginは、var_dumpすればnullに戻りますか?誰にもアイデアはありますか?

答えて

1

あなたのコントローラでは、チェックされています

if($login === TRUE) { 

は残念ながら、あなたのコントローラのために、モデルは、NEVERリターンTRUEので、あなたのコードは、あなたのelse{}ブロックに一つ一つの時間を落下します。

あなたのモデルのみ即時修正したようFALSEまたは$emailRow->id

の値を返し、あなたが試すことができます:

if($login !== FALSE) { 
+0

私に代わって何を愚かな間違い!本当にありがとう - 私がいつも逃している愚かな間違い。あなたが何時間もコードを始めるときに何が起こるかを推測してみてください。 – Chad

+0

あなたは大歓迎です。ある時点では「終わりの日」があなたの新しい規範になり、「時間を過ごす」だけを過ごした時代を思い起こさせるでしょう。あなたがすることができる最もよいことは、あなたが疲れているか新鮮であるかにかかわらず、良いデバッグ方法論(< - これは別の日の主題です)を練習する習慣を身につけることです。がんばろう! – MonkeyZeus

関連する問題