1

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

所以当用户点击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 获取用户名和密码数据。但我想我以后会自己解决。

有什么帮助吗?

4

1 回答 1

2

好的......这基本上比你想象的要困难得多,如果target.com不是明确支持某种代理登录的话,如果不是不可能的话。你在这里有三个派对:

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

通常,客户端登录target.com接收会话 cookie,这是他的登录令牌。只能target.comtarget.com.

当您代理此过程并让example.com登录时target.com,然后example.com接收 cookie。没关系,现在example.com已经通过身份验证了。但它无法将此身份验证传递给客户端,因为example.com无法代表target.com. example.com可以将收到的 cookie 传递给客户端,但该 cookie 仅对example.com.

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

于 2012-09-07T08:56:03.340 回答