【问题标题】:Using Cookie Expire with IF and ELSE PHP, echo not working on ELSE在 IF 和 ELSE PHP 中使用 Cookie Expire,回显在 ELSE 上不起作用
【发布时间】:2019-12-05 04:35:42
【问题描述】:

为什么?

我正在尝试使用我的 WordPress 网站设置 Adword 广告系列,这很简单,但我希望能够根据他们是否使用 AdWords 或 Bing/Google SERPS 访问该网站来切换联系表格。

所以我们的想法是,如果他们访问https://example.com/landing-page/,他们将到达一个页面,其中包含不同的联系电话和电子邮件表格,其标题表明他们来自 Adwords,所有这些都是直截了当的,但是,如果他们点击菜单远离着陆页,他们将获得标准号码和标准电子邮件表格,这使得跟踪过程有点困难。

设置临时 cookie

因此,通过使用自定义 WordPress page template files,当访问者访问着陆页时,它会使用以下方式设置 cookie:

<?php
    // 60 Seconds, live environment set to 6000 (1 hour)
    $date_of_expiry = time() + 60 ;
    setcookie( "adwords-customer", "adwords-visit", $date_of_expiry ); 
?>

检查 cookie 并执行 A 或 B

然后在整个网站的其余部分(不在登录页面上),它会检查 cookie 是否存在,如果存在则为 A,如果不存在则为 B,代码如下:

<?php 
    if(!isset($_COOKIE['adwords-customer']) || ($_COOKIE['adwords-customer'] != 'true')){
        echo "cookie set";
    } else {
        echo "cookie not set";
    }
?>

问题

结果总是“cookie set”,永远不会回显“cookie not set”,提前感谢您的帮助。

【问题讨论】:

  • != 'true' 你在这里检查字符串还是布尔值?
  • 你需要在这里反转你的条件,这就是原因。
  • 我认为这是一个错字。
  • 您正在检查 cookie 是否不存在,但您正在返回“cookie set”。可能您的 cookie 设置代码无法正常工作。
  • 嗨 Funk,对不起,我是个初学者,想知道错字在哪里?

标签: php if-statement cookies setcookie


【解决方案1】:

你在这里看到! 了吗?

if(!isset($_COOKIE['adwords-customer']) || ($_COOKIE['adwords-customer'] != 'true')){
   ^
    echo "cookie set";
} else {
    echo "cookie not set";
}

这意味着您正在检查它是否未设置,因此应将其删除或反转回声。

!= 'true' 确保您没有检查布尔值。如果是这样,请删除引号。


试试这个代码!

if(isset($_COOKIE['adwords-customer']) && ($_COOKIE['adwords-customer'] == true)){
    echo "cookie set";
} else {
    echo "cookie not set";
}

如果您发现它现在有效,但仅适用于设置 cookie 的 URL,请确保您的 setcookie 使用 / 设置以指示整个域,而不仅仅是 /path/,例如:

$value = 'adwords-visit';

setcookie("adwords-customer", $value);
setcookie("adwords-customer", $value, time()+60);
setcookie("adwords-customer", $value, time()+60, "/");

【讨论】:

  • 这就是我作为 wiki 发布的原因。
  • 嗨,Funk,谢谢,尝试了代码仍然得到相同的结果,总是设置 cookie,即使在没有设置 cookie 的新浏览器中也是如此。
  • 使用 php 的错误报告,然后使用 @SimonHayter 和/或 Wordpress 方法。确保您也不是缓存的受害者。
  • 我使用的浏览器是 EDGE,我从未访问过登陆页面,但我在调试器中查看过,cookie 中没有。我已经使用 .htaccess 启用了 php 错误,并且可以确认,没有报告任何内容,我特意使用&lt;?php trigger_error("Oops!", E_USER_ERROR); ?&gt; 来仔细检查报告是否已启用并记录,这是......遗憾的是,我的代码没有任何错误使用。
  • @FunkFortyNiner 最后得到它的工作,希望你不介意我编辑你的答案,所以它对其他人有帮助,而不仅仅是我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
相关资源
最近更新 更多