2010-04-14 173 views
3

我第一次使用cURL。我需要登錄到一個網站。 我有問題與設置Cookie文件並回顧,以便我可以訪問該頁面不只是一次,但幾次。 我在網上找到了代碼,用於登錄到一個網站,並廢棄一些頁面的詳細信息,導致該頁面花費很多時間。 所以我只想知道它是否可以!代碼belove(它只是一個登錄的代碼,刮壞了沒準備好)登錄網站cURL

<?php 

curl_login('http://mywantedsite.com/login.php','user=******&pass=******','','off'); 

echo curl_grab_page('http://mywantedsite.com/somepage.php','','off'); 

function curl_login($url,$data,$proxy,$proxystatus){ 
    $fp = fopen("cookie.txt", "w"); 
    fclose($fp); 
    $login = curl_init(); 
    curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt"); 
    curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    curl_setopt($login, CURLOPT_TIMEOUT, 40); 
    curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE); 
    if ($proxystatus == 'on') { 
     curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
     curl_setopt($login, CURLOPT_PROXY, $proxy); 
    } 
    curl_setopt($login, CURLOPT_URL, $url); 
    curl_setopt($login, CURLOPT_HEADER, TRUE); 
    curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_setopt($login, CURLOPT_POST, TRUE); 
    curl_setopt($login, CURLOPT_POSTFIELDS, $data); 
    ob_start();  // prevent any output 
    return curl_exec ($login); // execute the curl command 
    ob_end_clean(); // stop preventing output 
    curl_close ($login); 
    unset($login);  
}     

function curl_grab_page($site,$proxy,$proxystatus){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    if ($proxystatus == 'on') { 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
     curl_setopt($ch, CURLOPT_PROXY, $proxy); 
    } 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_URL, $site); 
    ob_start();  // prevent any output 
    return curl_exec ($ch); // execute the curl command 
    ob_end_clean(); // stop preventing output 
    curl_close ($ch); 
} 
?> 

回答

0

你爲什麼不以

$login = curl_init($url); 
+0

'CURLOPT_URL'就好了。但不要使用ob,而是讓curl返回輸出本身並用'$ output = curl_exec($ login);' – 2010-04-27 10:52:14

2

你需要檢查添加URL參數,如果你要留言所有「發佈字段」.. 一些網站使用安全令牌或會話ID來防止漫遊器登錄其網站。無論如何,你需要安裝Live HTTP頭文件firefox擴展。打開它並嘗試手動登錄,然後在按下登錄按鈕時看到實際發佈的內容。獲取值後,獲取 。然後添加到第一個函數並再次測試。

1

首先使用$strPostFields存儲的用戶名和密碼,然後使用

$this->m_strResourceCurl = curl_init(); 

,並在您的捲曲腳本添加此

curl_setopt($this->m_strResourceCurl, CURLOPT_POSTFIELDS, $strPostFields); 

我希望你這個小代碼段。