2016-02-03 34 views
2

我正在使用邏輯運算符來創建一個包含取決於用戶通過我的網站的流量路徑的值字符串的cookie。PHP Cookie控件

在我的網頁我有以下變量

$lgc_code = '3' 

和我的cookie控制設置如下:

if ($lgc_code != '') { 
    $lgc=$lgc_code; 

    // check for cookie 
    if (isset($_COOKIE['lgc_cntl'])) { 

     // read cookie 
     $lgc_codes=$_COOKIE['lgc_cntl']; 

     // check for triggers in cookie 
     $expEncArr = explode(",", $lgc_codes); 
     foreach($expEncArr as $code){ 
      if ($code==$lgc_code) {$found='yes';} 
     } 

     if (isset($found)) { 
      $lgc_codes=$_COOKIE['lgc_cntl']; 
     } else { 
      $lgc_codes=$_COOKIE['lgc_cntl'].','.$lgc; 
     } 

} else { 
    $lgc_codes=$lgc; 
} 
// add campaign to cookie 
setcookie('lgc_cntl',$lgc_codes,time() + (86400 * 365), "/", ".domain.com"); // 86400 = 1 day 

} else { 
    $lgc = '1'; 

    if (isset($_COOKIE['lgc_cntl'])) { 

     // read cookie 
     $lgc_codes=$_COOKIE['lgc_cntl']; 

     // check for triggers in cookie 
     $expEncArr = explode(",", $lgc_codes); 
     foreach($expEncArr as $code){ 
      if ($code==$lgc_code) {$found='yes';} 
     } 

     if (isset($found)) { 
      $lgc_codes=$_COOKIE['lgc_cntl']; 
     } else { 
      $lgc_codes=$_COOKIE['lgc_cntl'].','.$lgc; 
     } 

    } else { 
     $lgc_codes=$lgc; 
    } 
    // add campaign to cookie 
    setcookie('lgc_cntl',$lgc_codes,time() + (86400 * 365), "/", ".domain.com"); // 86400 = 1 day 
} 

這適用於單個變量從一個頁面傳遞到Cookie,但我需要能夠一次傳遞多個變量,同時將它們與cookie進行比較。

例如,如果我的頁面變量爲「1,5,10」,而我的cookie包含「1和10」,則只需要添加變量5。

目前,如果我在頁面上添加多個變量,曲奇餅簡單地複製他們每次頁面加載,所以我結束了「1,1,5,10,10」

我怎樣才能修改時間我的代碼在下面比較變量,只添加在cookie中找不到的變量?

+0

你如何在頁面上設置多個變量? '$ lgc_code ='1,5,10''? – slbteam08

+0

是的,多個變量的設置與您的假設完全相同。 –

+0

然後結果「1,1,5,10,10」來自多個頁面,單個$ lgc_code或者一個頁面$ lgc_code ='1,5,10''? – slbteam08

回答

0

如果$lgc_code可能包含逗號分隔值,則應該在比較之前將其轉換爲數組。試試這些線

// check for triggers in cookie 
$expEncArr = explode(",", $lgc_codes); 
foreach($expEncArr as $code){ 
    if ($code==$lgc_code) {$found='yes';} 
} 

更改爲

// check for triggers in cookie 
$expEncArr = explode(",", $lgc_codes); 
$thisPageArr = explode(",", $lgc_code); 
$newCodes = array_diff($thisPageArr, $expEncArr); 
if (!empty($newCodes)) { $found = 'yes'; } 
+0

當我修改代碼時,不再列出單個變量或多個變量。 –

+0

它能夠成功檢測單個和多個新代碼嗎? – slbteam08

+0

不,它似乎沒有檢測到您的代碼設置。 –