[英]PHP: use logged-in cURL session on normal web browser
晚上好!
我在PHP中有一个脚本,可以对远程主机登录页面进行CURL调用。 登录并通过cookiejar opt和cookiefile opt保持会话后,我使用相同的CURL连接处理程序登录到下一个需要上传的页面。 完成后,我获得了完整的会话参数,并且可以从站点中调用任何我想要的页面,但是在CURL中!
想法是,此脚本使用CURL,最终需要使用CURL会话重定向到远程主机中的那些页面之一,但这是不可能的,因为从curl您无法将结果显示为重定向页面。
所以我尝试了很多选择。 em根本不起作用。
架构:
那该怎么办?
1)完全登录后,阅读cookies.txt文件以获取PHPSESSID。 然后尝试使用setcookie()或通过header(“ Set-cookie:...”)以及之后立即使用header(“ Location:domain.com/index.php”)。
不起作用
2)通过ajax调用并最终document.cookie = ...
不起作用
3)向我的远程主机中的文件添加第三个cURL调用,将打印JSONED $ _SESSION。 将其获取到我的PHP脚本中,对其进行解码并通过任何数组值上的foreach加载到我的本地会话中(foreach()... $ _ SESSION [$ c] = $ v)。 在此foreach之前添加了session_start()。 紧随其后的是标题(“ Loaction:domain.com/index.php”)。
不起作用
4)在标头(“位置:domain.com/index.php”)之前添加了一个session_write_close()。
不起作用
所以我真的不知道如何使用CURL会话。
我试图通过Web Developer Firefox插件手动修复PHPSESSID。 我记下了curl生成的会话ID。 完美的作品。 因此,应该可以通过在我的PHP脚本上编写脚本来修复它! 但是我不能!
请帮帮我!
谢谢!
我可能有点迷路,但我想我明白。 您可以使用CURLOPT_HEADER进行一些调试(将包含当前重定向的页面信息)和CURLOPT_FOLLOWLOCATION,如下所示:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/login.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
我也用
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
以字符串形式返回,这对于调试或解析非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.