【问题标题】:Setting cookies with WordPress [duplicate]使用 WordPress 设置 cookie [重复]
【发布时间】:2012-09-21 04:35:23
【问题描述】:

可能重复:
Cookies aren't persisting in PHP?

我的目标是:当用户访问我的网站登陆页面并选择他们的城市(x 或 y)时,我想设置一个 cookie 来记住这个选择,这样下次他们访问登陆页面时,它会直接重定向到他们的城市。我目前拥有的代码是这样的:

登陆页面:

<?php
if (isset($_COOKIE['cambridge'])) {
    header('Location: http://cambridge.guestvibe.com');
}
else if (isset($_COOKIE['oxford'])) {
    header('Location: http://oxford.guestvibe.com');
}
?>

城市特定页面(一个示例):

<?php setcookie("Cambridge",""); ?>

我也试过了:

<?php setcookie("Cambridge",""); ?>

这对我不起作用,但这是我第一次使用 cookie。知道有什么问题吗?

编辑

接受的答案解决了一半的问题,但对于 WordPress,还需要添加一些代码,解释here

最终代码是:

setcookie('city','Cambridge',time()+86400*365, "/", ".guestvibe.com");

【问题讨论】:

  • 您是否尝试过启用error_reporing? Firebug/Liveheaders 等是怎么说的?
  • 错误报告未标记错误。我在哪里看 Firebug?

标签: php wordpress cookies session-cookies


【解决方案1】:

那是因为您对setcookie() 的使用肯定会在浏览器关闭时过期。 setCookie 有第三个参数,您应该使用它来设置到期时间。默认情况下,关闭浏览器时将其排除在外。下面是一个关于如何设置 365 天后过期的 cookie 的示例:

setcookie('city','Cambridge',time()+86400*365); // remember for 365 days.

然后,将您的代码更改为以下内容:

if ($_COOKIE['city'] == 'Cambridge') {
    // redirect
} else if ($_COOKIE['city'] == 'Oxford') {
    // redirect
}

有关设置 cookie 的更多信息,请查看setcookie 的 PHP 文档。

【讨论】:

  • 感谢您的回复。不幸的是,它对我不起作用。如果有帮助,主页是 www.guestvibe.com/index2.php,城市是 cambridge.guestvibe.com。
  • 您是否注意到,在您使用setcookie() 之后,$_COOKIE 中的数据将在下一次对服务器的请求(例如:页面重新加载)之前无法访问?
  • 我设法解决了这个问题。这也是一个WordPress问题。在原始问题中添加了额外的位。
猜你喜欢
  • 2014-01-03
  • 2013-11-28
  • 2017-04-07
  • 2017-09-05
  • 2016-03-29
  • 2015-01-24
相关资源
最近更新 更多