1

我目前正在尝试创建一个 php 脚本,如果用户能够将他们的用户连接到多个页面。

这就是想法。

我想要做的是检查用户是否登录到战斗日志,然后获取他的用户名。

我不确定这是否可能......但我会很感激我能得到的任何帮助!

4

2 回答 2

1

您将在这里遇到的主要问题是大多数现代浏览器采用跨域安全性来确保其他网站或潜在的恶意网站无法非法访问另一个浏览器窗口中的用户数据。

您希望完成的是所谓的跨站点脚本。在某些情况下是可能的。例如,如果战斗日志公开了一个 API 供其他开发人员访问用户数据。

这当然会涉及跨域的服务器端请求,因此您要么需要将服务器用作代理,要么使用 JSONP Web 服务,其中响应以 JSON 格式发送并包含在回调函数中。

从 PHP 脚本访问数据:

由于您使用的是 PHP,因此您需要访问 API。PHP 脚本无法向浏览器发出请求,因此 Battlelog 需要有一个插件架构,您可以在其中将脚本嵌入到他们的网站中,或者他们需要公开一个 API 供您从您的服务器查询。

于 2012-04-07T23:38:39.443 回答
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;
}
于 2012-04-23T18:31:53.117 回答