【问题标题】:Set tracking cookie from link using URL query, redirect to selected link on return visit使用 URL 查询从链接设置跟踪 cookie,在回访时重定向到选定的链接
【发布时间】:2020-06-09 16:13:25
【问题描述】:

我的页面有 4 个链接,当有人单击其中一个链接时,我想设置一个 cookie 来存储所选链接,然后当他们返回该站点时,cookie 会将他们重定向到他们之前选择的链接。由于我只希望 4 个链接设置 cookie,因此我在链接中使用查询字符串 (?sel=p1) 并检查它以设置 cookie。

function set_pref_cookie(){

    if (isset($_GET['sel'])) {
        $root = $_GET['sel'];

        if ($root = 'p1'){
            $cookie_var = '/page1/';
        } else if ($root = 'p2'){
            $cookie_var = '/page2/';
        } else if ($root = 'p3'){
            $cookie_var = '/page3/';
        } else if ($root = 'p4'){
            $cookie_var = '/page4/';
        }

    } else {
      $root = '';
    }

    if ($root !=''){
        setcookie('pref_sel',$_COOKIE['sel'] = $cookie_var, time()+60*60*24*5, "/");
    }

    if (isset($_COOKIE['pref_sel']) && $_COOKIE['pref_sel'] != ''){
        header('Location:' .  $_COOKIE['pref_sel']);
        exit;
    }
}

add_action('init','set_pref_cookie');

问题是,所有 4 个链接在 cookie /page1/ 中设置了相同的值 ,并且,在返回站点时,我得到了一个重定向循环。

我也试过检查空 cookie

if (isset($_COOKIE['pref_sel']) && !empty($_COOKIE['pref_sel']) ){

但结果相同。

【问题讨论】:

  • if (isset($_COOKIE['pref_sel']) && $_COOKIE['pref_sel'] != $root){ header('Location:' . $_COOKIE['pref_sel']);出口; }
  • 谢谢,但我试过了,问题仍然存在。 $cookie_var 设置为 /page-1/ 无论点击什么链接,回家还是有重定向问题。
  • 是的,因为您设置的 cookie 只有一个等号(情感)而不是 2 个等号 ==(比较)

标签: php wordpress cookies


【解决方案1】:

要参考你第一张票中的所有cmets,还有这张(请不要对同一个问题使用2个问题)

=> 使用不带循环的 cookie 进行重定向:通过我在第一个问题中给你的更正并解释给你的更正来解决。

=> 第二个问题:您总是被重定向到第 1 页。 => 请像这样修复这部分代码:

if ($root == 'p1'){
            $cookie_var = '/page1/';
        } else if ($root == 'p2'){
            $cookie_var = '/page2/';
        } else if ($root == 'p3'){
            $cookie_var = '/page3/';
        } else if ($root == 'p4'){
            $cookie_var = '/page4/';
        }

您还应该添加一个 else 案例,因为您的 $cookie_var 有时可能为空值。

=> 第三,你想用你的 setcookie 做作来达到什么目的?

setcookie('pref_sel',$_COOKIE['sel'] = $cookie_var, time()+60*60*24*5, "/");

你应该只这样做:

setcookie('pref_sel', $cookie_var, time()+60*60*24*5, "/");

=> 进行调试,注释您的重定向并将其替换为

echo $_COOKIE['pref_sel'];

【讨论】:

  • @shacker : 我的最后一条评论是你的答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多