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

PHP create cookies on different domains on same server (cURL)

我正在创建一个多语言网站,在用户登录后我需要跨所有域(在同一台服务器上)创建 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 来实现?

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

对此没有纯粹的php解决方案。您不能为您提供响应的域以外的域设置 cookie。 Curlget_file_contents 不与用户的浏览器交互。设置 cookie 由处理您的服务器响应的浏览器执行。

但是,除了提供来自其他两个域(称为第三方域)的图像(或其他文件类型)之外,您还可以重定向所有这些域并设置每次后续重定向之前的 cookie(使用 header("Location: url");

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

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

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

我过去使用的一个解决方案是在数据库中创建一个 "session_access" 或 "cookie_access" table,所有站点都可以访问该数据库以查看 session/cookie无需再次登录即可创建。

例如...

  • 站点A用于登录
  • PHP 使用 cookie 在 MySQL 中的 "cookie_access" table 上创建一条记录 身份证.
  • 用户跳转到站点 B(通过 link 或转发并传递 ID)
  • PHP 根据站点 A 的 cookie ID 为活动会话读取 "cookie_access" table,如果存在,站点会自动让用户登录并为站点 B 设置新的 cookie .