2012-02-27 18 views
1

みましょう、我々は以下の取得参照URLアプリケーション

目的をしましたと言う:ユーザーが視聴テキストコンテンツをロックするとviwerはまったく同じURL $refereから来ている場合にのみ表示するために許可される特定の正確なURL $refereを掲載します。

$refere = "http://www.site_site.com"; // User will post it 
$r = $_SERVER['HTTP_REFERER']; // To get real referral 

と私はそれは常に私に$r = $_SERVER['HTTP_REFERER'];空白を与え、次の

<?PHP 

if(stripos($r, $refere) == false){ 

echo "Wrong"; 

} else { ?> 

echo "Go"; 

} 

?> 

をやりたいです!どのPHPバージョンでも廃止予定ですか?ユーザーがhttps://よう$refereを掲示またはwww.を逃したかだけwww.site_site.com

を示す$r = $_SERVER['HTTP_REFERER'];はそう誰でも関係なく、ユーザーが正常に動作しないことが、このコードを調整するために私を助けることができますがsite_site.com投稿されたもの

また

$refereリンクを完全に投稿したか、site_site.comのみを投稿しました。

+0

私は$ r = getenv( "HTTP_REFERER")も使用しました。エコー$ ref;また空白! –

+0

HTTPリファラーが$ refereで始まっていると、比較は失敗します。これは、striposが0をその位置として返すためです。 PHPでは0 == falseなので、=== falseを使用してください! – Overv

答えて

0

$_SERVER['REFERER']変数は、別のページからページへのリンクをクリックしたとき、およびブラウザ(または使用している最終的なプロキシまたはファイアウォール)がリファラーヘッダーを削除していない場合にのみ設定されます。

2番目の質問には、いくつかの文字列の比較を行います。関数strpos()substr()は非常に役に立ちます。

+0

はい私は他のウェブサイトからのリンクをクリックして、他のウェブサイトのページに私を送りましたが、参照URLを取得していましたが空白です。 –

+0

@JackBen要約:いいえ、ありません。 var_dump($ _ SERVER)がリファラーを明らかにしない場合は、ブラウザまたはプロキシまたはファイアウォールがヘッダーを削除する必要があります。 – CodeCaster

+0

ファイアウォールのおかげでありがたいことに感謝していますが、今でもうまく動作しますが、何らかのエラーが表示されます。$ rと$ refereが同じである必要があります。例:$ refere = http://www.my_site.infoリンク上に$ r = http://my_site.info/go.phpがあると、両方が同じであるとわからないので間違っています! –

関連する問題