2011-02-05 29 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と評価されます。だから偽== 0、あなたのコードは常に実行されます。 開始twitter.com

値と型が一致の両方を必要とする厳密な比較を使用する代わりに==

しかし
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"; 
} 

、リファラが、それはとても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

0

を私はあなたが混乱しstrposを持っているかもしれないと思う()はstrcmp(と)、であることはstrcmp()を返す0 2つの文字列が等しい場合。 strpos()は、文字列が見つかった位置を返します。試してみてください:

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