繁体   English   中英

PHP:在普通的Web浏览器上使用登录的cURL会话

[英]PHP: use logged-in cURL session on normal web browser

晚上好!

我在PHP中有一个脚本,可以对远程主机登录页面进行CURL调用。 登录并通过cookiejar opt和cookiefile opt保持会话后,我使用相同的CURL连接处理程序登录到下一个需要上传的页面。 完成后,我获得了完整的会话参数,并且可以从站点中调用任何我想要的页面,但是在CURL中!

想法是,此脚本使用CURL,最终需要使用CURL会话重定向到远程主机中的那些页面之一,但这是不可能的,因为从curl您无法将结果显示为重定向页面。

所以我尝试了很多选择。 em根本不起作用。

架构:

  • 本地服务器上的PHP脚本。
  • 调用domain.com/loggin.php(创建curl ch)
  • 将curl会话保持在cookie.txt文件上。
  • 使用相同的ch调用domain.com/loggin_2.php(未关闭最后一个)。
  • 已完全登录到远程站点。
  • 回到PHP脚本。 需要重定向到domain.com/index.php,这需要使用完整的登录过程填充Session变量。

那该怎么办?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM