Sprawdź:
Blokowanie linkowania twoich obrazków na innych stronach
Hotlinkowanie to umieszczanie linku do pliku znajdującego się na innym serwerze. Dla małych hostingów jest to bardzo uciążliwe, gdyż często mamy tam ograniczony transfer i ktoś podbiera nasze zasoby, a gdy je przekroczymy musimy płacić ekstra.
Jednak możemy się przed tym zabezpieczyć wykorzystując plik .htaccess jednak nie zawsze jest taka możliwość, dlatego mam dla Was alternatywne rozwiązanie.
Stworzymy skrypt PHP, który rozwiąże problem hotlinkowania.
Kod:
<?php
function hotlink($serwer) {
$dlugosc = strlen($serwer);
$referer = substr($_SERVER['HTTP_REFERER'],0,$dlugosc);
if ($serwer == $referer) return true;
else return false;
}
if (hotlink("http://webmade.org/") === TRUE)
{
switch($_GET['id'])
{
case 1:
$plik = "grafika.rar";
break;
case 2:
$plik = "folder/plik2.rar";
break;
default:
$plik = "error.php";
}
header("Location: http://webmade.org/".$plik);
}
else header("Location: http://webmade.org/");
?>
Pierwsza część kodu to jedno-argumentowa funkcja hotlink().
Argumentem tej funkcji jest adres serwera dla którego ma być "podpięte" zabezpieczenie hotlink. Cała funkcja sprawdza czy strona z której zostało zainicjowane pobieranie jest naszym serwerem. W przypadku powodzenia warunku funkcja zwraca true.
Na naszym serwerze posiadamy plik index.html w tej samej lokalizacji co hotlink.php(wraz z naszym skryptem). W pliku index.html mamy link, który odnosi się do lokalizacjihotlink.php?id=1. Ponieważ plik znajduje się na naszym serwerze przechodzi test hotlinkowania. Natomiast z powodu, że id=1(zmienna id ma wartość 1) plik grafika.rar zostanie pobrany.
Na koniec chciałbym zwrócić uwagę na pewny szczegół, który jest bardzo istotny. Zmienna $_SERVER['HTTP_REFERER'] jest wysyłana do serwera przez przeglądarkę i nie musi być tak zawsze.