2016-03-04 26 views
1

嘿,我正嘗試從我的Google adwords廣告系列爲訪問我的網站的訪問者顯示不同的電話號碼。根據引薦來源顯示不同內容

下面的代碼沒有else語句(所以如果我點擊到Google的頁面,它會顯示一條消息,如果我經常訪問網站它不會)。當我添加else語句時,它輸出兩個數字。謝謝

<?php 

// The domain list. 
$domains = Array('googleadservices.com', 'google.com'); 

$url_info = parse_url($_SERVER['HTTP_REFERER']); 

if (isset($url_info['host'])) { 
    foreach($domains as $domain) { 

     if (substr($url_info['host'], -strlen($domain)) == $domain) { 

      // GOOGLE NUMBER HERE 

      echo ('1234'); 
     } 
      // REGULAR NUMBER HERE 

     else { 
      echo ('12345'); 
     } 
    } 
} 

?> 

回答

1

你的邏輯有些偏斜;你正在檢查parse_url的URL是否與數組中的域匹配;但是你每次都在整個陣列中運行。所以你得到一個匹配和一個不匹配,因爲google.com匹配一個條目,但不匹配其他。

我建議讓您的域數組關聯數組:

$domains = Array('googleadservices.com' => '1234', 
       'google.com' => '12345'); 

然後你只需要檢查一次:

if (isset($url_info['host'])) { 
    if (isset($domains[$url_info['host']])) { 
     echo $domains[$url_info['host']]; 
    } 
} 

我沒有測試這一點,但它應該是足以讓你看到邏輯。

(我也去掉了substr檢查 - 你可能需要把,早在,以確保你得到你需要尋找確切的字符串)

+0

嘿感謝。我的邏輯是..如果用戶訪問googleadwords或谷歌 - 顯示選項a .. else顯示選項b ..不是你的回覆會幫助我嗎? – hyp0thetical

+0

在這種情況下...您可以給數組中的兩個字段賦值相同的值,並向if添加一個else;所以如果引用者不在查找數組中,則發送一個默認值。如果你需要的話,這會給你一點額外的靈活性來添加額外的條目。 – andrewsi