PHP在同一台服务器上的不同域上创建cookie(cURL)

时间:2015-01-16 14:11:25

标签: php curl cookies

我正在创建一个多语言网站,在用户登录后,我需要在所有域(在同一台服务器上)创建cookie:

example.com
example.de
example.it

我知道这个解决方案 - http://subinsb.com/set-same-cookie-on-different-domains(从 img 属性中调用 .php文件)但是有没有纯PHP解决方案?

我正在尝试解决 cURL 解决方案,但它不起作用:

$url = "http://www.example.de/createcookie.php?value=hashvar";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_exec($curl);

用户登录后,需要在当前域上创建cookie,然后调用(通过cURL)createcookie.php文件,该文件在其他域上创建cookie。

可以通过 cURL 或其他一些PHP函数(例如 get_file_contents )来实现这样吗?

所有域都放在同一台服务器上。

2 个答案:

答案 0 :(得分:2)

我过去使用的解决方案是创建一个" session_access"或" cookie_access"所有站点都可以访问的数据库中的表,以查看是否可以创建会话/ cookie而无需另外登录。

...例如

  • 网站A用于登录
  • PHP在" cookie_access"上创建一条记录带有cookie的MySQL表 ID。
  • 用户跳转到站点B(通过链接或转发ID并转发)
  • PHP读取" cookie_access"基于站点A的cookie ID的活动会话表,如果存在,站点会自动将用户登录并为站点B设置新的cookie。

答案 1 :(得分:1)

没有纯php 解决方案。您不能为其他域设置cookie,而不是为您提供响应的域。 Curlget_file_contents不与用户的浏览器进行互动。设置cookie由处理服务器响应的浏览器执行。

但是,您可以重定向所有这些域并在每个后续设置之前设置Cookie,而不是从其他两个域(称为第三方域)提供图像(或其他文件类型)重定向(使用header("Location: url");

即。在example.com上登录后,您将重定向到:

  • example.it/your_script.php。您重定向的文件设置cookie并且不返回任何html重定向到
  • example.de/your_script.php。同样,您设置了一个cookie并再次重定向到
  • example.com/login_destination.php

然而,与在html中使用非阻塞第三方对象相比,这会带来更长的加载时间。