2016-03-04 101 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