所以我有一个网站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(找不到页面)
上显示错误此外,它没有从网址获取用户名和密码数据。但我想我以后会自己解决它。
任何帮助?
答案 0 :(得分: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的登录方案,否则从根本上说是搞砸了。