使用PHP $ _SERVER [HTTP_REFERER]显示自定义欢迎消息/内容

时间:2011-02-05 20:25:00

标签: php wordpress

我正在尝试根据他们来自哪个社交媒体网站向访问者显示自定义欢迎信息。我不能让这个字符串工作,但无论引用网站是什么,它都会回显。谁能帮助我让这个工作?非常感谢!

<?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'];
}
?>

让这个工作但没有运气。

2 个答案:

答案 0 :(得分: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 :(得分:0)

我认为你可能把strpos()与strcmp()混淆了,当strcmp()在两个字符串相等时返回0。 strpos()返回找到字符串的位置。尝试:

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