2016-04-29 88 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

首先检查响应,什么是它返回,我的猜测,它返回“真” /”假“,所以$response==false与说的不一样,$response=='false'。所以,你要么需要检查值或将其转换做了严格的检查之前,布尔,是这样的:

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

或做:

$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()可以返回不同的结果取决于您的配置 更多Anthony Hatzopoulos answer

我建议使用Requests在PHP Web请求