2011-02-05 122 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."; 
} 
?> 
相關問題