0

我正在尝试为同一个站点设置两个 cookie。(除了一个是 HTTP,一个是 HTTPS 站点。)

 $cookie_domain_http = parse_url(HTTP_SERVER);
 $cookie_domain_https = parse_url(HTTPS_SERVER);

假设 HTTP_SERVER 包含http://www.somesite.com并且 HTTPS_SERVER 包含https://ssl1.otherdomain.com,我正在使用以下内容。

   setcookie("referrer_key",
     $_GET['referrer'],
     time() + 60*60*24*365,
     $cookie_domain_http['path'], 
     $cookie_domain_http['host']); // Set the cookie for the non-HTTPS version.

if(ENABLE_SSL == "true") {
   setcookie("referrer_key",
     $_GET['referrer'], 
     time() + 60*60*24*365, 
     $cookie_domain_https['path'], 
     $cookie_domain_https['host']); // Set the cookie for HTTPs version.
}

现在首先setcookie是正确设置会话 cookie。但是,第二行不会导致它显示。

我怎样才能使用这个代码,特别是 PHP 来做到这一点。

4

2 回答 2

2

您只能在一个域中设置一个 cookie,即您的代码正在运行的那个域。您可以获得的最接近的是设置为 somesite.com,在这种情况下,它将被发送到 somesite.com 的所有子域

您不能在同一段代码中同时在 somesite.com 和 othersite.com 上设置 cookie。

否则,没有什么可以阻止您为任意域添加 cookie。

于 2012-05-07T05:18:23.030 回答
1

http://php.net/manual/en/function.setcookie.php

最后还有一个参数,您可以使用它来指定 cookie 是否安全。

if (ENABLE_SSL == "true") 
  setcookie("referrer_key", 
  $_GET['referrer'], 
  time() + 60*60*24*365, 
  $cookie_domain_https['path'], 
  '.somesite.com', // Parse out the base domain, and put it here with the leading "."
  true); //this is the parameter to set specify a secure cookie
于 2012-05-07T05:03:31.913 回答