PHP和cURL cookie

时间:2009-10-26 14:23:14

标签: php cookies curl

我正在尝试设置一个php页面,它使用cURL命中第三方服务器来登录。现在我的代码成功登录到第三方服务器,但由于cURL没有将SESSION cookie发送到用户,用户必须自己登录

如何让cURL将cookie转发给客户端。 感谢

3 个答案:

答案 0 :(得分:4)

查看documentation以了解以下cURL选项:

CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR

修改

在更彻底地阅读您的问题之后,我不敢告诉您除非您将客户端重定向到您尝试授权它们的网站,否则无法将cookie写入客户端浏览器。浏览器cookie在称为Same Origin Policy的安全模型上运行。这基本上意味着域只能为其OWN域发布cookie,并且不能为其他域发布cookie。在您的特定情况下:

client --CONTACTS--> foo.com --cURL-LOGIN--> bar.com
bar.com --bar.com-COOKIE--> foo.com --foo.com-COOKIE--> client
client --foo.com-COOKIE--> bar.com (Will not work)

基本上,foo.com无法在bar.com的客户端上创建cookie!

答案 1 :(得分:1)

用户的浏览器很可能不允许您为其他域设置Cookie。

您可以在PHP代码中登录并获取(例如)Hotmail的会话cookie。但是您无法将该会话传递给用户(因此他/她也将登录)。

这是因为许多浏览器和配置拒绝设置第三方Cookie。

答案 2 :(得分:0)

您可以在用户的​​浏览器中设置cookie,而无需将其重定向到服务器。你需要做的是让用户使用其中的curl代码点击你的php页面。然后你可以把他的帖子数据发送到服务器。但是不要让服务器重新启动你。 将选项设置为 CURLOPT_FOLLOWLOCATION 为false,并将 CURLOPT_HEADER 设置为true 现在抓住标题并提取cookie和位置标题,然后将其传递给 标题到客户端浏览器,如标题(“位置:...)和标题(”Set-Cookie:....)。你也可以通过提取它们来发送其他标题。以下[post] html page not getting cookies through libcurl也有类似情况