使用setcookie设置Cookie,但在$_COOKIE中找不到


Cookie set with setcookie, but not found with $_COOKIE

我尝试在这个页面上设置一个cookie,像这样:

<?php
setcookie("fasciaoffer", $name, time()+36000);
?>

我已验证cookie已设置。

然后,当我的客户查看他们的购物篮时,我想检索cookie并显示一条消息:

<?php
if (isset($_COOKIE["fasciaoffer"]))
   echo "<b>Special offers available</b> - buy any 3 covers & get your 4th     choice   free! " . $_COOKIE["fasciaoffer"] . "!<br />";
else
   echo "<b>Special offers available</b> - none available on current order<br />";
?>

然而,在我的购物篮中出现的消息是没有找到饼干的消息。

有什么问题吗?我的编码正确吗?


p。检索位所在的文件(购物篮)不在根文件夹中。

bool setcookie(字符串$name[,字符串$value [, int $expire = 0 [,String $path [, String $domain [, bool $secure = false [, bool$httponly = false]]]]]])

[. .]

path

The path on the server in which the cookie will be available on.

如果设置为'/', cookie将在整个域中可用。如果设置为'/foo/', cookie将只在/foo/目录和所有子目录,如/foo/bar/的域。的默认值是cookie设置的当前目录在。

您告诉我们检索cookie的文件不在根路径中。

如果设置它的文件也不在根路径中,请确保在调用setcookie时将$path设置为"/"(或者可能是适合您使用的不同值)。

使用cookie时,我总是有一段有趣的时光。但这是我的想法:

1)你确定$name传递了一个值吗?要检查这一点,在放置cookie后回显$name。我通常用echo("name: $name
")来测试变量;只是为了确保我的头和PHP在同一个页面上。如果您收到一个空值,这是您的问题。

2)我通常发现在读取任何cookie之前进行页面刷新是有益的。不过你应该加上一个限定符,比如if (!isset($_COOKIE['fasciaoffer'])) {set cookie code}