使用URL查询从链接设置跟踪cookie,在回访时重定向到选定的链接



我有 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/中设置相同的值 ,并且,在返回站点时,我得到了一个重定向循环。

我也尝试检查过空饼干

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

但结果是一样的。

参考您的第一张票和这张票中的所有评论(请不要对同一问题使用 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'];

最新更新