때때로 우리 웹사이트를 방문하는 사용자가 특정 링크나 페이지를 통해서만 우리 웹사이트에 들어갈 수 있기를 바라는 경우가 있습니다. 이 경우 안티 핫링크 기술을 구현해야 합니다. 이는 http 프로토콜에서 리퍼러 콘텐츠 필터링을 사용합니다.
예를 들어 우리 지역에 웹 페이지가 있는데 경로는 http://localhost/http/fdl_one.php이고 내용은 다음과 같습니다.
<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 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.