我有 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'];