2013-10-11 4 views
0

Я закодировал для входа на удаленный сайт с помощью CURL with PHP, но после получения ответа я получаю сообщение с веб-сайта, что Your browsers cookie functionality is turned off. Please turn it on. Однако файлы cookie включены и вход в браузер работает на сайте.cUrl не может войти в систему на удаленном сайте

Ниже мой код, я закодирован:

function __construct($forum_url,$username,$password){ 
     if(!function_exists('curl_init')){ 
      trigger_error('api_chrono::error, Sorry but it appears that CURL is not loaded, Please install it to continue.'); 
      return false; 
     } 

     if(empty($forum_url)){ 
      trigger_error('api_chrono::error, The forum location is required to continue, Please edit your script.'); 
      return false; 
     } 
     $this->forum_url = $forum_url; 
     $this->cookie_path = plugin_dir_path(__FILE__).'cookies/'.md5($forum_url).'.txt'; 
     $this->deleteCookie(); 
     $this->username = $username; 
     $this->password = $password; 
     $this->FetchPage(); 
    } 
private function FetchPage(){ 
     $this->curl = curl_init(); 
     curl_setopt($this->curl, CURLOPT_URL,$this->forum_url); 
     curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt ($this->curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
     curl_setopt($this->curl, CURLOPT_TIMEOUT, 60); 
     curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION,1); 
     curl_setopt($this->curl, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($this->curl, CURLOPT_REFERER,$this->forum_url); 
     $page = curl_exec($this->curl); 
     include('ganon.php'); 
     $dom = str_get_dom($page); 
     $this->continueTo = $dom('input[name="continueTo"]',0)->getAttribute('value'); 
     $this->changeLogInPermanentlyPref = $dom('input[name="changeLogInPermanentlyPref"]',0)->getAttribute('value'); 
     $this->_sourcePage = $dom('input[name="_sourcePage"]',0)->getAttribute('value'); 
     $this->__fp = $dom('input[name="__fp"]',0)->getAttribute('value'); 
    } 

    public function login(){ 
     $postdata = "email=".$this->username."&password=".$this->password."&logInPermanently=1&continueTo=".$this->continueTo."&_sourcePage=".$this->_sourcePage."& 
     __fp=".$this->__fp."&login=Login"; 

     //$this->curl = curl_init(); 
     curl_setopt($this->curl, CURLOPT_URL,$this->forum_url); 
     curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt ($this->curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
     curl_setopt($this->curl, CURLOPT_TIMEOUT, 60); 
     curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION,1); 
     curl_setopt($this->curl, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($this->curl, CURLOPT_COOKIEJAR,$this->cookie_path); 
     curl_setopt($this->curl, CURLOPT_COOKIEFILE,$this->cookie_path); 
     curl_setopt($this->curl, CURLOPT_REFERER,$this->forum_url); 
     curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata); 
     curl_setopt($this->curl, CURLOPT_POST,1); 
     echo $page = curl_exec($this->curl); 

     //curl_setopt($this->curl,CURLOPT_URL,'www.chrono24.com/en/dealer-area/index.htm'); 
     //echo curl_exec($this->curl); 

     //Error handling 
     if(curl_errno($this->curl)){ 
      $this->error = array(
       curl_errno($this->curl), 
       curl_error($this->curl), 
      ); 
      curl_close($this->curl); 
      return $this->error; 
     } 
     return true; 
    } 

FetchPage() вызывает сначала через конструктор для получения всех скрытых и уникальных значений, и после этой функции Логина() является вызов.

класса пары: FORUM_URL = https://www.chrono24.com/en/user/login.htm имени пользователя = [email protected] PWD: test123I

Любой помощь должны быть очень заметными.

ответ

1

На странице входа в систему будут указаны некоторые файлы cookie, которые вы должны отправить с каждым запросом. Поэтому вы должны установить cookiejar и -file также в FetchPage.

+0

Привет большое спасибо :-) – ravisoni

Смежные вопросы