在 php 中设置 cookie


Setting cookie in php

我正在尝试设置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。