2011-02-05 65 views
2

我试图根据他们来自哪个社交媒体网站向访问者显示自定义欢迎消息。我无法让这个字符串工作,但无论引用网站是什么,它都会回应。任何人都可以帮我解决这个问题吗?非常感谢!

<?php 
if (strpos("twitter.com",$_SERVER[HTTP_REFERER])==0) { 
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers"; 
} 
?> 

使用

<?php 
if(isset($_SERVER['HTTP_REFERER'])) { 
    echo $_SERVER['HTTP_REFERER']; 
} 
?> 

得到这个工作,但没有运气尝试。

回答

4

strpos当搜索词没有出现在字符串中时返回false。与布尔值相比,0的值也为false。所以false == 0,并且你的代码总是运行。

使用进行严格比较,要求价值和类型的匹配,而不是==

if (strpos("twitter.com", $_SERVER['HTTP_REFERER']) === 0) { 
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers"; 
} 

但是,引用不会下手 twitter.com,它会与http://https://使你的病情开始首先是不正确的。要在字符串中搜索twitter.com其他地方:

if (strpos("twitter.com", $_SERVER['HTTP_REFERER']) !== false) { 
    echo "Welcome, Twitter User! If you enjoy this post, don't hesitate to retweet it to your followers"; 
} 
+1

+1 - 对OP的说明,还有用于不区分大小写匹配的`stripos`和`stristr`。 – karim79 2011-02-05 20:34:17

0

我想你可能混淆strpos()使用strcmp(),是STRCMP()返回0,当两个字符串相等。 strpos()返回找到字符串的位置。试试:

<?php 
if (strpos('twitter.com', $_SERVER['HTTP_REFERER'] != 0)) { 
    echo "Welcome, twitter user."; 
} 
?> 
相关问题