【问题标题】:cookies are determined only on the pages where they were setcookie 仅在设置它们的页面上确定
【发布时间】:2012-12-19 23:51:50
【问题描述】:

我有一个使用 mvc 模式的大网站,用链接和东西提供细节有点困难,但我想问一个简单的问题。

当我设置这样的cookie时setcookie("countviews_interview_downloads_1",'1',$this->registry->config['countviews_cookie_lifetime']);

然后像这样检查:

if (isset($_COOKIE['countviews_interview_downloads_1']))
{
  print('msg: cookie is on interview #1');
  exit;
}

一条消息显示msg: cookie is on interview #1 仅出现在已设置的页面上。

如果我将上面的代码用于检查 cookie 的任何其他页面上,它没有出现,表现得就像从未设置过一样。

请帮帮我。谢谢!

【问题讨论】:

  • 您指的是哪种“页面”?
  • 我不明白我指的是什么页面是什么意思。在/interview/christmas/countdownloads 上设置了 Cookie,如果我在此页面上放置了检查代码,则消息显示 cookie 已设置,但如果我在页面 /interview/interview/christmas// 或其他地方放置检查代码,则消息不会不出现。似乎它只是为网站的那个页面设置的。

标签: php cookies


【解决方案1】:

如果您没有为 cookie 指定任何路径,则 cookie 仅对同一路径有效。在你的情况下,这将是/interview/christmas/countdownloads。因此,只需将 cookie 的路径设置为 /,它就会出现在所有其他路径中:

setcookie("countviews_interview_downloads_1",'1',$this->registry->config['countviews_cookie_lifetime'], '/')

【讨论】:

  • 嗯。现在它工作了,但我之前尝试过它并没有工作,也许是因为我也指出了域?好的,我会保留它。非常感谢您。我会尽快接受你的回答。
  • @tmpmember 不,不需要指定域。同样,如果未明确指定,则使用发布域。
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多