2012-04-07 76 views
1

我目前正在嘗試創建一個PHP腳本,用戶有能力將他們的用戶連接到多個頁面。通過認證從外部網站提取內容。

這就是主意。

我想要檢查用戶是否登錄到battlelog,然後抓住他的用戶名。

我不確定是否有可能...但我會很感激任何幫助,我可以得到!

+2

您應該提出一個問題,以避免刪除/ downvotes。你有什麼嘗試? – RyanS 2012-04-07 23:35:41

+1

當瀏覽器/訪問者發出HTTP請求時,您的PHP腳本僅包含有關客戶端的基本信息,例如IP和用戶代理。這還不足以檢查他是否登錄了不受您控制的第三方服務。 – MrCode 2012-04-07 23:40:52

回答

1

您要在這裏遇到的主要問題是,大多數現代瀏覽器都採用跨域安全性來確保其他網站或潛在惡意網站無法在其他瀏覽器窗口中非法訪問用戶數據。

你希望完成什麼叫做跨站腳本。在某些情況下是可能的。例如,如果戰略日誌公開一個API供其他開發者訪問用戶數據。

這當然會涉及到服務器端請求跨域,所以你要麼需要使用您的服務器作爲代理服務器,或使用其中的響應在包裹在一個回調函數JSON格式發送JSONP Web服務。

訪問數據從PHP腳本:

由於您使用PHP,你需要訪問的API。 PHP腳本不能向瀏覽器發出請求,因此battlelog需要有一個插件架構,您可以在其中嵌入腳本到他們的網站,或者他們需要公開API以供您從服務器進行查詢。

+0

謝謝你的回答! – 2012-04-07 23:44:06

+0

我只是相信我的用戶正在輸入正確的細節。祝你有美好的一天! – 2012-04-07 23:51:03

0

我創建了這個腳本,我希望有人能找到它的用處。

$data = array( 

'redirect' => '', 

'email' => $email, 

'password' => $password , 

'submit' => 'Sign+in' 

); 

$cr = curl_init('http://battlelog.battlefield.com/bf3/gate/login/'); 

curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($cr, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 

curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt'); 

curl_setopt($cr, CURLOPT_POST, true); 

curl_setopt($cr, CURLOPT_POSTFIELDS, $data); 

$output = curl_exec($cr); 

echo $output; 

curl_close($cr); 


$cr = curl_init('http://battlelog.battlefield.com/bf3/'); 

curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($cr, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 

curl_setopt($cr, CURLOPT_COOKIEFILE, 'cookie.txt'); 

$output = curl_exec($cr); 

curl_close($cr); 


include '/scripts/shd/simple_html_dom.php'; 

$html = new simple_html_dom(); 

$html -> load($output); 

foreach($html->find('#base-user-name a') as $e) 
{ 
    $battlelog_username = $e->plaintext; 
} 
+0

既然你回答了你自己的問題,你還應該解釋這是如何在你的回答中起作用的,以便其他人可以理解你所做的事情。例如,您可以通過編輯答案來解釋代碼內的評論。從你的問題來看,這聽起來像你試圖查詢瀏覽器。不過,你回來向別人提供解決方案真是太好了。不錯的工作。 – jmort253 2012-04-23 22:12:02