晚上好!
我在PHP中有一个脚本,它对远程主机登录页面进行CURL调用。 登录并通过cookiejar opt和cookiefile opt保持会话后,我使用相同的CURL连接处理程序登录到即时下一页需要上传。 当它完成后,我得到了完整的会话参数,我可以从网站上调用我想要的任何页面,但是IN CURL!
这个想法是,这个脚本使用CURL,需要最终使用CURL会话重定向到远程主机中的一个页面,但这是不可能的,因为从curl你不能将结果显示为重定向页面。
所以我尝试了很多选择。没有一个人可以工作。
架构:
该怎么做?
1)完成登录后,读取cookies.txt文件以获取PHPSESSID。 然后尝试使用setcookie()或通过标题(“Set-cookie:...”)并立即使用标题(“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)在标题之前添加了session_write_close()(“Loaction:domain.com/index.php”)。
不起作用。
所以我真的不知道如何使用CURL会话。
我尝试通过Web Developer Firefox插件手动修复PHPSESSID。我写下了curl生成的会话ID。它完美的作品。所以,应该可以通过脚本在我的PHP脚本上修复它!但我不能!
请帮帮忙!
谢谢!
答案 0 :(得分:0)
我可能已经迷失了一点,但我想我明白了。 您可以使用 用于某些调试的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);
以字符串形式返回,这对于调试或解析更有用。