【问题标题】:Outputting getcookie variable in PHP without browser refresh在没有浏览器刷新的情况下在 PHP 中输​​出 getcookie 变量
【发布时间】:2011-07-01 20:48:17
【问题描述】:

我正在使用以下代码输出一个没有 cookie 的内容块,如果设置了 cookie,则输出另一个数字。问题是getcookie 变量在页面刷新或用户导航到下一页之前不起作用。

我很高兴使用标头重定向,但不确定将其放在代码中的哪个位置(除非有人对代码本身有更好的解决方案):

if (is_page(817)) {
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
}
if ($_COOKIE["phonecookie"] =="") {
    echo "no cookie here";
} else { 
    echo "cookie stored!"; 
}

此外,如果访问者登陆 WordPress 中的特定页面,上面的代码会设置 cookie。

是否有另一种方法可以通过查询字符串来做到这一点,例如example.com/?src=affiliate

【问题讨论】:

    标签: php cookies refresh setcookie


    【解决方案1】:

    试试这个

    if ((is_page(817) && (!isset($_COOKIE["phonecookie"]) {
         setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN); 
         //Your redirect code here
         header("Location:yoururl);
    } elseif (isset($_COOKIE["phonecookie"])) {
         echo "cookie stored!";  
    } else {
         echo "no cookie here or page is not 817";
    }
    

    【讨论】:

    • 太棒了,谢谢。如何更改 if 语句以包含带有查询字符串而不是 is_page(817) 的 URL?谢谢
    【解决方案2】:

    使用标头重定向回同一页面:

    if (is_page(817) && empty($_GET['redirect'])) {
        setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
        header("Location: http://url-for-this-page.com/path/?query=thequery&redirect=1"); 
        exit(0);
    }
    

    redirect=1 已添加到 URL 以在用户禁用 cookie 时停止无限循环。

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 2019-03-12
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多