我正在尝试使用我的php web应用程序上的一个按钮在另一个网站上启动登录会话。换句话说,我希望我的申请:
这是实现的(以不完整的方式使用以下代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$result = curl_exec ($ch);
curl_close ($ch);
print $result;这成功地可视化了远程站点的“登录”页面,但是每当我单击该远程站点的任何功能时,我就会得到和明显的404。这是因为我只是通过cURL打印成功登录的输出,而我的浏览器没有处理目标网站上的远程应用程序。例如,我的地址栏显示我在local.dev/loggedin.php中,而不是在secure.Target tsite.com/loggein.php。
这可能是有帮助的:一旦通过浏览器登录,目标网站就会设置一个会话cookie,使会话能够在一定时间内存活下来,因此这也可能是有用的。我的web应用程序可以从curl执行的auth过程中获取和存储会话数据并使用它登录吗?
这可能不可能通过cURL来完成。
我正在考虑解析cookie的响应头并使用php setcookie(),但是它不起作用:我被远程应用程序反弹,就好像我从未登录过一样。
请耐心点,我不是使用卷发的专家。
发布于 2017-02-17 16:22:34
我已经对我自己的一些应用程序这样做了,但是它应该适用于几乎任何可以通过html表单提交登录的应用程序。您不能为此使用curl,因为它正在您的web服务器上运行(无论是在您的本地计算机上,还是在云中某个无关的地方),而不是由您的浏览器实际运行。您的PHP应用程序需要打开一个新的选项卡/窗口,其中包含一个包含所有必要字段的method=、适当的action=“get”或"post“以及action=”目标登录URL“。然后添加一个自动表单提交-例如,在页面加载时使用jQuery $('#form_id').submit()。
https://stackoverflow.com/questions/39677532
复制相似问题