我正在尝试设置cookie,但它没有被设置。
$hp = explode('=', $hp);
$shp = $hp[0];
echo $hp_id=$hp[1];
if(empty($_cookie['betahomepage1'])) {
setcookie('betahomepage1',$hp_id,$expire,"/");
echo "cookie not set";
} else {
echo "cookie is set";
}
如果您在使用 PHP 函数时遇到问题,请仔细检查所有参数并重新阅读有关它们的 PHP 手册。
有问题的函数是:
-
setcookie
你写道:
setcookie('betahomepage1', $hp_id, $expire , "/" , "https://www.mtsbeta.com");
^^^^^^^^^^^^^^^^^^^^^^^^^
$name , $value, $expire , $path , $domain
域参数不是 HTTP URI。它只是域:
域
Cookie 可用的域。将域设置为'www.example.com'
将使 Cookie 在 www 子域和更高级别的子域中可用。可用于较低域(例如"example.com")的 Cookie 将可用于较高子域(例如'www.example.com'
)。仍在实现已弃用的 » RFC 2109 的旧版浏览器可能需要前导 .以匹配所有子域。
PHP 中包含所有 cookie 的预定义变量称为 $_COOKIE
(注意大写),请参阅手册中的页面。
由于 PHP 中的变量区分大小写,因此您正在比较的$_cookie
变量将是NULL
,除非在其他地方明确设置。
因此,您的 cookie 正在设置,但您没有正确检索它。
此外,调试 cookie 的一个好方法是使用 FireBug(或 Chrome 开发者工具);他们可以在浏览器中显示所有活动的 Cookie。
如果你想绝对确保在调试期间在PHP中设置了一个cookie,你可以去一个var_dump($_COOKIE)
,这将明确地告诉你为当前请求设置了哪些cookie。