2012-03-22 61 views
1

我需要做一些基本的如果URL语句的东西,但我知道没有什么关于PHP。我已经尝试了一些我在网上找到的例子,但它们似乎并不奏效。PHP如果URL声明

注意:这是一个WordPress的博客,如果这使得一个不同的。

我希望有一个 “PHP IF URL” 语句来执行以下操作:

如果URL引用= twitter.com然后回显

"Follow us on <a href="twitter.com/example">Twitter</a> 

如果URL引用= facebook.com然后回显

"Follow us on <a href="facebook.com/example">Facebook</a> 

如果没有url引用或上面没有回显“Follow us on Nothing”

+1

请分享你试过的几个例子,你可以知道它出错的地方。 – paislee 2012-03-22 23:48:04

回答

2

You可以通过访问$_SERVER['HTTP_REFERER']来检查您的推荐人。如有必要,您可以使用parse_url()解析出网址。

一定要仔细阅读php.net警告有关引荐:

的页面(如果有的话),其中提到的用户代理到当前页面的地址。这由用户代理设置。并非所有的用户代理都会设置它,有些提供了将HTTP_REFERER修改为功能的功能。 总之,它不能真正被信任

+1

Asker还应该注意,当来自'https'站点时,HTTP引用者未设置。 Facebook和Twitter使用'https' AFIK。 – drew010 2012-03-22 23:50:27

1

您可以从$ _SERVER ['HTTP_REFERER']中检索URL,使用parse_url解析它,然后根据parse_url的响应回应您的响应。它返回一个关联数组,其中主机密钥是主机名。

<?php 
if (empty($_SERVER['HTTP_REFERER'])) 
    echo 'Follow us on Nothing'; 
else { 
    $ref = parse_url($_SERVER['HTTP_REFERER']); 

    switch($ref['host']) { 
    case 'twitter.com': 
     echo 'Follow us on <a href="http://twitter.com/example">Twitter</a>'; 
     break; 
    case 'facebook.com': 
     echo 'Follow us on <a href="http://facebook.com/example">Facebook</a>'; 
     break; 
    default: 
     echo 'Follow us on Nothing'; 
     break; 
    } 
} 
?> 

记得检查引荐者是否有任何东西。并非所有的浏览器都发送它,如果用户没有从其他站点发送,则不会发送,例如:手动输入网址。

另请注意,如果用户使用https浏览页面,也发送任何参考。

0

输出将存储在$ str中。

$url = $_SERVER["HTTP_REFERER"]; 
$url_parts = parse_url($url); 

switch($url_parts["host"]) 
{ 
    case "twitter.com": 
    $str = "Follow us on <a href=\"twitter.com/example\">Twitter</a>"; 
    break; 
    case "facebook.com": 
    $str = "Follow us on <a href=\"facebook.com/example\">Facebook</a>"; 
    break; 
    default: 
    $str = ""; 
    break; 
}