2013-12-10 79 views
0

我只是玩弄試圖學習PHP,並決定寫一個PHP頁面,可以從英雄聯盟板拉動信息。我遇到的問題是該網站需要我先登錄。香港專業教育學院嘗試過如何在LeagueOfLegends.com/board上進行php cURL登錄,驗證碼和會話?

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://forums.euw.leagueoflegends.com/board'); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6'); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
    curl_setopt($ch, CURLOPT_REFERER, "http://leagueoflegends.com"); 
    $html = curl_exec($ch); 
    curl_close($ch); 
    echo $html; 

,我已經試過

file_get_contents('http://forums.euw.leagueoflegends.com/board/') 

但每次我一事無成。我希望在另一個標籤上登錄會讓我在論壇上獲得頁面的來源,但似乎並非如此。我真的不知道該從哪裏走,或者我應該尋找什麼來給我一個線索。通常我喜歡發佈更多信息,但就像我說的我正在學習PHP;我似乎通過跳進來學習最好。

+0

使用瀏覽器,而不是像firebug的網絡標籤,或httpfox,並看到通信過程是什麼。例如請求是否被重定向到某處?你不尊重重定向,只是紓困。 –

回答

3

首先,祝你在學習PHP的道路上好運! Curl功能強大,但最近我一直在使用Guzzle(guzzlephp.org),因爲它易於使用。

大多數具有登錄機制的網站確實使用會話或cookie來映射用戶,因此您處於正確的路徑。你有什麼上面只會檢索主板頁面。從這裏開始,你會提交第二個curl請求來登錄。登錄頁面有:

https://account.leagueoflegends.com/login

這實際上一個模式窗口,雖然彈出並使用驗證碼。你會提交以下表單字段:

username 
password 
recaptcha_response_field 

到:https://account.leagueoflegends.com/auth

因爲這有一個驗證碼,你最好的選擇可能是登錄爲自己和導出您的cookie數據這個領域,看看你可以在腳本中重複使用它。它會在某個時間到期,所以這不會完全自動化。

+0

感謝您指出正確的方向,有沒有什麼辦法通過PHP來拉現有的會話或cookie或將不得不手動完成? –

+0

它會在你的計算機上的本地,所以在*理論*你可以找到一種方法來做到這一點與代碼,但我懷疑這會花你一大筆時間來弄清楚。閱讀本文並手動複製數據會更快:http://stackoverflow.com/a/15071638/181151 –