2016-04-29 5 views
0

私はcURLを使用してウェブサイトからログインしようとしますが、私は検証ログインエラーを出したいと思います。私がページにログインするのに失敗した場合、ページはまだ警告を表示してログインするのに成功すれば、警告を表示します。 。私のコードに何が問題なのですか?おかげ は、ここに私のライブラリのコードは次のとおりです。私の関数ログインCurlは常にtrueを返しますか? CodeIgniter

public function loginIdws($username ,$password){ 

       $url = 'http://forum.idws.id/login/login'; 
       $data = '_xfToken=&cookie_check=1&login='.$username.'&password='.$password.'&redirect=http://forum.idws.id/'; 
       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_COOKIEJAR,"cookie.txt"); 
       curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie.txt"); 
       curl_setopt($ch, CURLOPT_TIMEOUT,40000); 
       curl_setopt($ch, CURLOPT_HEADER,FALSE); 
       curl_setopt($ch, CURLOPT_NOBODY,FALSE); 
       curl_setopt($ch, CURLOPT_URL,$url); 
       curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0"); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
       curl_setopt($ch, CURLOPT_REFERER,$_SERVER['REQUEST_URI']); 
       curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
       curl_setopt($ch, CURLOPT_POST,TRUE); 
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

       $baca = curl_exec($ch); 
       if ($baca=== false){ 
        return false; 
       }else 
       { 
        return true; 
       } 
       $info = curl_getinfo($ch); 
       curl_setopt($ch,CURLOPT_URL,"http://forum.idws.id/account/"); 
       curl_setopt($ch,CURLOPT_POST, 0); 
       $baca2 = curl_exec($ch); 
       return false; 

       curl_close($ch); 
       $pecah1 = explode('<fieldset>',$baca2); 
       $pecah2 = explode('</fieldset>',$pecah1[1]); 
       echo "<fieldset>"; 
       echo $pecah2[0]; 
       echo "</fieldset>"; 
           } 

これは私のコントローラのコードされています。すべての

public function loginn(){ 
       $username= $this->input->post('login','true'); 
       $password = $this->input->post('password','true'); 
       if($this->ci_curl->loginIdws($username,$password)===false){ 
        echo "<script> alert('Invalid Username & Password'); 
            window.location.href='index'; 
         </script>"; 
         }else { 
        $this->load->view('curl/thread'); 
        return true;  
       } 
      } 

答えて

0

まず応答を確認し、それが戻っている何、私の推測では、それは本当の '/」戻っていますfalse 'なので、$response==falseは、$response=='false'と同じではありません。だから、あなたは厳格なチェックを行う前に、ブールする値をチェックしたり、それを変換する必要があるのいずれか、何かのように:

$baca = curl_exec($ch); 
$loginOk = $baca === 'true'? true: false; 
return $loginOk; 

OR行います

$baca = curl_exec($ch); 

    if ($baca == 'false'){ 
     return false; 
    } else { 
     return true; 
    } 

、それを期待すべきであると。実行されなかった後

1

コード、

$baca = curl_exec($ch); 
       if ($baca=== false){ 
        return false; 
       }else 
       { 
        return true; 
       } 

あなたが結果を返すので、どこにでも
curl_exec()は ご使用の構成に依存して異なる結果を返すことができ、私はPHPでWeb要求をRequestsを使用することをお勧めよりAnthony Hatzopoulos answer

を読みます