2012-08-14 88 views
0

我正在尝试设置cookie,但没有设置。在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"; 
} 

回答

2

如果遇到PHP函数的问题,请仔细检查所有参数并重新阅读关于它们的PHP手册。

的功能问题是:

您写道:

setcookie('betahomepage1', $hp_id, $expire , "/" , "https://www.mtsbeta.com"); 
                ^^^^^^^^^^^^^^^^^^^^^^^^^ 
      $name   , $value, $expire , $path , $domain 

域参数不是一个HTTP URI。它只是域:


该cookie可用的站点。将域设置为'www.example.com'将使cookie在www子域和更高子域中可用。可用于较低域名的Cookie(例如'example.com')可用于较高的子域名,例如'www.example.com'。旧版浏览器仍在实施已弃用的» RFC 2109可能需要领先。以匹配所有子域。

+0

我已经删除了域名。我已经在同一页面上设置了另一个cookie。两个cookie都有相同的代码,只是变量是不同的。第二个cookie正在工作,但第一个不起作用。 – user1515728 2012-08-15 00:08:11

+0

下一步是了解'setcookie'具有返回值。检查该值是否存在错误。你也可能想要启用错误报告等。 – hakre 2012-08-15 00:09:19

0

PHP中包含所有cookie的预定义变量称为$_COOKIE(注意大写),see the page in the manual

As variables in PHP are case sensitive,您正在比较的$_cookie变量将为NULL,除非在其他地方明确设置。

因此,您的Cookie正在设置,但您没有正确检索它。此外,调试Cookie的一个好方法是使用FireBug(或Chrome开发人员工具);他们可以在浏览器中显示所有活动的Cookie。

如果您想确保在调试过程中已经在PHP中设置了cookie,您可以使用var_dump($_COOKIE),它将明确告诉您为当前请求设置了哪些cookie。