【问题标题】:Cookie set with setcookie, but not found with $_COOKIE使用 setcookie 设置的 Cookie,但使用 $_COOKIE 未找到
【发布时间】:2011-08-02 13:56:52
【问题描述】:

我尝试在this page 上设置一个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 />";
?>

但是,我的购物篮中出现的消息是未找到 cookie 的消息。

可能是什么问题?我的编码正确吗?


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

【问题讨论】:

  • 购物篮页面与设置cookie的页面是否在同一个域(包括子域)?
  • @Ibrahim 没有错误。我认为您没有正确阅读他的问题。
  • @Ibrahim Azhar Armar 似乎没有错误消息。相反,系统的行为就像未设置 cookie 一样
  • 是设置cookie的代码和读取同一域/子域上的cookie的代码吗?顺便说一句,您的链接给了我一个 404 错误。
  • @BenEverard:关于您的编辑,原标题更好。不鼓励这样标记标题;请不要!

标签: php cookies


【解决方案1】:

bool setcookie ( string $name [, string $value [, int $expire = 0 [, 字符串 $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 设置为"/"(或者可能仍然适合您使用的其他值)。

【讨论】:

    【解决方案2】:

    在使用 cookie 时,我一直都很开心。但这是我的想法:

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

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

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多