2009-10-26 96 views
1

我想安装一个php页面,它使用cURL命中第三方服务器来登录它们。现在我的代码成功登录到第三方服务器,但由于cURL没有发送SESSION饼干给用户,用户必须自己登录PHP和卷曲饼干

如何获取cURL将cookies转发给客户端。 感谢

回答

4

退房的documentation以下卷曲选项:

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!

+0

子域呢? – 2009-10-26 14:45:49

+0

对于子域名,在从cURL获取cookie后,使用我建议的选项,您应该使用set_cookie的域名为“.domain.com”,其中domain是最长的公共子域名。 – 2009-10-26 14:49:41

1

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

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

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

+0

好吧,它在同一个子域内 服务器1:foo.bar.com 服务器2:sub.domain.bar.com – 2009-10-26 14:43:19

0

您可以在用户的​​浏览器中设置cookie,而不必将其重定向到服务器。你需要做的是让用户用curl代码打到你的php页面。那么你可以把他的发布数据发送给服务器。但不要让服务器重新启动你。 设置选项,CURLOPT_FOLLOWLOCATION为假,并设置CURLOPT_HEADER为真 现在抢头和提取饼干和位置头,然后通过这些测试 头部像头中的客户端浏览器(“位置:...)和标题(“Set-Cookie:....)。您也可以通过提取其他标题来发送其他标题。以下[帖子] html page not getting cookies through libcurl也有类似的情况