Установить отслеживание приготовить ie из ссылки с помощью запроса URL, перенаправить на выбранную ссылку при повторном посещении - PullRequest
0 голосов
/ 26 мая 2020

У меня есть страница с 4 ссылками, когда кто-то нажимает на одну из ссылок, я хочу, чтобы повар ie сохранял выбранную ссылку, затем, когда они возвращаются на сайт, повар ie перенаправляет их на ссылку, которую они выбрали ранее. Поскольку мне нужны только 4 ссылки для установки повара ie, я использую строку запроса (? Sel = p1) в ссылке и проверяю ее, чтобы установить повар ie.

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 ссылки устанавливают одинаковое значение в cook ie /page1/, и при возвращении на сайт я получаю перенаправление l oop.

У меня также пробовал проверить наличие пустого повара ie

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

, но результат тот же.

1 Ответ

0 голосов
/ 09 июня 2020

Чтобы сослаться на все комментарии в вашем первом тикете и в этом (пожалуйста, не используйте 2 вопроса для одной и той же проблемы)

=> Перенаправление с Cook ie без l oop: ОК, исправлено исправлением, которое я дал вам и объяснил в первом вопросе.

=> вторая проблема: вы всегда перенаправляетесь на страницу 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 иногда может иметь пустое значение.

=> третье, чего вы хотите достичь с помощью setcook ie с аффектацией?

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'];
...