当社の Web サイトにアクセスするユーザーが特定のリンクまたはページからのみ当社の Web サイトにアクセスできることを希望する場合があります。この場合、ホットリンク対策テクノロジーを実装する必要があります。これは、http プロトコルのリファラー コンテンツ フィルタリングを使用します。
たとえば、パス http://localhost/http/fdl_one.php を持つローカル Web ページがあり、コンテンツは次のとおりです。
<a href="fdl_two.php">click here to see more</a>
<a href="fdl_two.php">I also want to see more</a>
<?php if(isset($_SERVER['HTTP_REFERER'])){ if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/http/fdl_one.php")===FALSE){ header("Location:http_test_err.php"); }else{ echo "yes,you can see it now."; } }else{ header("Location:http_test_err.php");//如果用户不是通过链接点击,此时不会有referer,跳转到禁止访问提示页面 } ?>
strpos の戻り値については言及する価値があります。パラメータ 1 の文字列内でパラメータ 2 の文字列が存在する開始位置を返します。パラメータ 2 が見つからない場合は、FALSE が返されます。したがって、使用する場合は、一致するかどうかを最初に判断する必要があります。このとき、戻り値の型と値を厳密に制御し、=== 記号を使用する必要があります。 (マッチング時に戻り値が0になる可能性があるため!!)
実際によく使われるのは、あるページは自分のサイトからはアクセスできるが、他のサイトからはアクセスできないということです。このとき、strpos関数のパラメータ2の内容を自サイトのディレクトリ名に変更するだけです。他の訪問をフィルタリングして除外できます。
上記では、アンチホットリンクと PHP コンテンツを含む、PHP でのアンチホットリンクの実装について紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。