根据Referrer显示不同的内容

时间:2016-03-04 15:39:29

标签: php

嘿我正试图通过我的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 个答案:

答案 0 :(得分:1)

你的逻辑略有偏差;您正在检查来自parse_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支票 - 您可能需要将其重新插入,以确保您获得了需要查找的确切字符串。