使用PHP或JavaScript在多个域上设置cookie

时间:2013-10-23 01:25:26

标签: javascript php cookies setcookie

我有3个以相同为主题的域名。如果有人选择不同的主题,我希望它在所有3个域中传播,以便他们的体验保持不变。

我计划通过在domain1上设置cookie,重定向到设置了cookie的domain2,重定向到设置了cookie的domain3,重定向回来来实现此目的。由于信息不需要是安全的或受到保护的,因此无需任何实际问题即可正常工作。

我讨厌3重定向只是为了在每个域上设置一个cookie并且正在寻找更优雅的东西。

2 个答案:

答案 0 :(得分:34)

做谷歌正在做的事情。是的,谷歌正在采用同样的方法将用户登录到YouTube和其他不同域名的Google服务。

创建 PHP 文件,在所有3个域上设置Cookie。然后在主题设置的域上,创建一个 HTML 文件,该文件将加载在其他2个域上设置cookie的 PHP 文件。例如:

<html>
   <head></head>
   <body>
      <p>Please wait.....</p>
      <img src="http://domain2.com/setcookie.php?theme=whateveryourthemehere" />
      <img src="http://domain3.com/setcookie.php?theme=whateveryourthemehere" />
   </body>
</html>

然后在 body 标记上添加 onload 回调。只有当图像完全加载时才会加载文档,即在其他2个域上设置cookie时。 Onload回调:

<head>
   <script>
   function loadComplete(){
      window.location="http://domain1.com";//URL of domain1
   }
   </script>
</head>
<body onload="loadComplete()">

setcookie.php

我们使用这样的PHP文件在其他域上设置cookie:

<?php
if(isset($_GET['theme'])){
   setcookie("theme", $_GET['theme'], time()+3600);
}
?>

现在,Cookie已在三个域上设置。

Source - My Blog

答案 1 :(得分:0)

您可以在iFrame中包含其他两个域。有关更多信息,请搜索“第三方cookie”。但是,根据浏览器设置,用户可能不接受第三方cookie。这里还有其他一些想法:What's your favorite cross domain cookie sharing approach?