通过身份验证从外部网站提取内容。

时间:2012-04-07 23:33:12

标签: php curl login external file-get-contents

我正在尝试创建一个php脚本,用户可以将用户连接到多个页面。

这就是主意。

我要做的是检查用户是否已登录battlelog,然后获取用户名。

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

2 个答案:

答案 0 :(得分:1)

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

您希望实现的是所谓的跨站点脚本。在某些情况下是可能的。例如,如果battlelog为另一个开发人员公开API以访问用户数据。

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

从PHP脚本访问数据:

由于您使用的是PHP,因此您需要访问API。 PHP脚本无法向浏览器发出请求,因此,战斗日志需要具有可在其网站中嵌入脚本的插件架构,或者他们需要公开API以便您从服务器进行查询。

答案 1 :(得分: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;
}