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


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)可以实现这样的事情吗?

所有域都位于同一服务器上。

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

例如...

  • 站点 A 用于登录
  • PHP 使用 cookie 在 MySQL 中的"cookie_access"表上创建记录同上。
  • 用户跳转到站点 B(通过链接或转发并传递 ID)
  • PHP 根据站点 A 的 cookie
  • ID 读取活动会话的"cookie_access"表,如果存在,站点会自动登录用户并为站点 B 设置新的 cookie。

没有纯粹的 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 中使用非阻塞第三方对象引入了更长的加载时间。