【问题标题】:PHP cookie value works only after 2 page loadsPHP cookie 值仅在 2 个页面加载后才有效
【发布时间】:2012-10-06 04:23:11
【问题描述】:

我知道这可能是一个非常初级的问题,但我才刚接触 PHP 一个月,所以请多多包涵。我正在尝试在 WordPress 博客中设置 cookie。 cookie 从 URL 接收它的值。 "http://www.xyz.com/?name=John"

这是设置 cookie 的方式:

function set_name_cookie() {
    if (isset($_GET['name'])) {
        $name = $_GET['name'];
        setcookie("name", $name, time()+3600, "/", ".xyz.com", false);
    }
}
add_action( 'init', 'set_name_cookie');

HTML + PHP:

<?php if(isset($_COOKIE['name'])) {
      $name = $_COOKIE['name'];
      echo $name; 
?>
<a href="?name=John">John</a>
<a href="?name=Smith">Smith</a>

问题是,当我单击“John”或“Smith”链接时,页面加载但名称没有回显。 我必须再次刷新才能使名称回显。流量有些问题。帮忙?

【问题讨论】:

    标签: php wordpress cookies


    【解决方案1】:

    当您设置 cookie 时,它​​不会在该页面加载时填充 $_COOKIE,因为该变量是从浏览器发送给您的内容中加载的。一种解决方法是在您的 setcookie 语句之后设置 $_COOKIE['name'] = $name; - 但这并不能保证浏览器接受并实际设置 cookie - 只是一种使其在您的脚本中立即可用的方法。

    【讨论】:

    • 哇!这确实很好用。但 Chrome 仍会获取旧名称。我必须努力刷新 cookie 才能在 Chrome 上运行。在 Firefox 上完美运行。我猜,这就是 Chrome 的缓存在起作用。
    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多