簡體   English   中英

使用 URL 查詢從鏈接設置跟蹤 cookie,在回訪時重定向到所選鏈接

[英]Set tracking cookie from link using URL query, redirect to selected link on return visit

我的頁面有 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']) ){

但同樣的結果。

參考您第一張票中的所有評論,以及這個(請不要對同一個問題使用兩個問題)

=> 使用沒有循環的 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'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM