晚上好!PHP:在正常的网络浏览器上使用已登录的cURL会话
我在PHP中创建了一个CURL调用远程主机登录页面的脚本。 在通过cookiejar opt和cookiefile选择登录并保持会话之后,我使用相同的CURL连接处理程序登录到需要上载的即时下一页。 完成后,我得到了完整的会话参数,我可以从网站调用任何我想要的页面,但是在卷曲中!
这个想法是,这个脚本使用CURL,最终需要使用CURL会话重定向到远程主机的那些页面之一,但这是不可能的,因为从curl你不能显示结果为重定向页面。
所以我尝试了很多选择。他们都没有工作。
模式:在本地服务器上
- PHP脚本。
- 调用domain.com/loggin.php(创建curl ch)
- 保持curl会话cookie.txt文件。
- 使用相同的ch调用domain.com/loggin_2.php(非关闭的最后一个)。
- 完全登录到远程站点。
- 回到PHP脚本。需要重定向到domain.com/index.php,这需要使用完整登录过程填充的会话变量。
那该怎么办?
1)完成登录后,阅读cookies.txt文件以获取PHPSESSID。 然后尝试使用setcookie()或通过头(“Set-cookie:...”)并立即使用头(“Location:domain.com/index.php”)。
不起作用。
2)通过Ajax调用最后的document.cookie =尝试同样的事情...
不工作。
3)添加第三个cURL调用到我的远程主机中的一个文件,打印一个JSONED $ _SESSION。 (foreach()... $ _ SESSION [$ c] = $ v)获取它在我的PHP脚本,解码它并通过foreach加载到我的本地会话。 在此foreach之前添加了session_start()。并立即,一个标题(“Loaction:domain.com/index.php”)。
不起作用。
4)在标题(“Loaction:domain.com/index.php”)前添加了一个session_write_close()。
不起作用。
所以我真的不知道如何使用CURL会话。
我试过通过Web Developer Firefox插件手动修复PHPSESSID。我写下了curl生成的会话ID。它完美的作品。所以,应该可以通过脚本修复我的PHP脚本!但我不能!
请给我一只手!
谢谢!
也许我需要更彻底地阅读,但您是否尝试了** CURLOPT_FOLLOWLOCATION ** [CURL选项](http://us.php.net/manual/en/function.curl-setopt.php)? – quickshiftin 2012-02-01 02:21:50