我正在尝试为同一站点设置两个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来做到这一点。
您只能在一个域中设置 cookie,即运行代码的域。您可以获得的最接近的是设置为 somesite.com,在这种情况下,它将被发送到 somesite.com 的所有子域
您不能在同一段代码中同时对 somesite.com 和 othersite.com 设置 Cookie。
否则,没有什么可以阻止您为任意域添加 cookie。
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