2012-09-07 92 views
1

所以我有一个网站http://example.com 还有一个网站我想登录; http://target.com 我想要一个脚本,可以填写登录表单(用户名和密码)在http://target.com从我的网站。从其他网页使用PHP登录网站

所以当上http://example.com/login.php&username=John&password=12345

用户点击他应该登录http://target.com直接发送到欢迎页面。

我得到了这段代码;

$url = "http://target.com"; 
$post = "username=John&password=12345&login=++Ba%F0lan++"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
echo curl_exec($ch); 
curl_close($ch); 

但它没有转发我到欢迎页面。相反,它显示我在http://example.com(页面未找到)上的错误

它也没有从url获取用户名和密码数据。但我想我会在稍后自行解决。

任何帮助?

+0

对我来说,它看起来像钓鱼脚本。 – Peter

回答

2

确定...如果target.com没有明确支持某种通过代理登录,那么这基本上比您想象的要困难得多,如果不是不可能的话。你这里有三方:

client ----> example.com ----> target.com 

通常情况下,客户端登录在target.com接收会话cookie,这是他的登录令牌。只有target.com可以为target.com设置Cookie。

当您代理此过程并让example.com登录target.com时,则example.com会收到Cookie。没关系,现在example.com已通过身份验证。但它无法将此身份验证传递给客户端,因为example.com无法代表target.com设置Cookie。 example.com可能会将收到的cookie传递给客户端,但该cookie仅适用于example.com

除非target.com支持某种不依赖于cookie的基于URL的登录方案,否则您将从根本上搞砸了。

+1

@Peter当然,所以'example.com'只是准备了预填充值的登录表单,并可以让客户端通过Javascript自动提交。这可以工作,但如果'target.com'使用明智的CSRF保护,它也可能失败。 – deceze