mirobor
20.02.2017, 22:12:30
Mam taką zagwostkę.
Zewnętrzne serwisy wczytują konkretne pliki jpg z mojego hostingu.
Wczytywane są tylko pliki -nie mogę podrzucać im ani php, ani js, ani żadnych innych kodów.
Jakie są możliwości abym w czasie jako tako rzeczywistym przechwytywał url'e które zwracają się do mnie po pliki?
trueblue
20.02.2017, 22:18:34
Tomplus
20.02.2017, 22:39:17
Parafrazując kod z StackOverFlow:
$img = 'imageFolder/{$_GET['name']}.jpg';
header('Content-Type: image/jpeg');
Ale nie można zapomnieć także o .htaccess
Kod
RewriteRule ^imageFolder\/([a-z0-9]{1,64})\.jpg$ /imageScript.php?name=$1
Ja korzystam z m/w takiego kodu do kontroli obrazów i przy okazji można przetwarzać np. dodając znak wodny.
mirobor
20.02.2017, 23:57:11
Pięknie to działa z .htaccess, ale jak tą metodą uzyskać url ? $_SERVER['HTTP_HOST'] zwraca mi przecież url pliku php.
Tomplus
21.02.2017, 07:37:20
Myślę że to powinno pomóc:
$_SERVER['QUERY_STRING']
mirobor
21.02.2017, 11:51:00
hmm, nie wiem, czy się dobrze rozumiemy.
.htaccess przekierowuje do pliku php, który na podstawie zmiennej w GET serwuje plik jpg. I wszystko pięknie. Ale jak pozyskać pełne url'e stron które zgłaszają się po ten plik?
Dodam, że nie znam urls serwisów, które wczytują plik z mojego hostingu.
O czym mam poczytać? Kopnijcie w dobrym kierunku.
viking
21.02.2017, 12:00:28
var_dump($_SERVER) i masz pełną tablicę danych jakie możesz uzyskać. Pamiętaj że nie wszystkie są zawsze dostępne (jak np referer), trzeba też je zabezpieczyć.
Tomplus
21.02.2017, 15:34:15
@Mirobor
Testowałeś moją pomoc?
Wszystkie globalne zapytania jakie chcesz zobaczyć to jak umieścisz w kodzie funkcję: phpinfo(32); przed headerem obrazka
Zamiast obrazka, powinieneś mieć tabelkę z globalami PHP. A jeżeli to za dużo, to wystarczy użyć to co podał Viking.
mirobor
21.02.2017, 18:25:59
Nie radzę sobie z tym. Opiszę dokładnie.
w .htaccess dodałem rewrite
RewriteRule ^myfolder\/([a-z0-9]{1,64})\.jpg$ /home/pathotofile/imageScript.php?name=$1
plik imageScript.php
$img = 'myfolder/'.$_GET['name'].'.jpg';
$url = '?';
$file = fopen("testfile.txt", "w"); header('Content-Type: image/jpeg');
plik php serwuje grafikę i na tym przykładzie powinien zapisać plik tekstowy z url'em który zgłosił się po grafikę.
Czytam, ale nie znalazłem w jaki sposób wykorzystać w tym var_dump($_SERVER).
trueblue
21.02.2017, 19:03:13
Analogicznie do $_GET.
Tomplus
21.02.2017, 20:18:23
@Mirobor
Jak napisałem... Zrób sobie test.... Zrób:
RewriteRule ^myfolder\/([a-z0-9]{1,64})\.abc$ /home/pathotofile/testowySkrypt.php?name=$1
A następnie w testowySkrypt.php dodaj tylko i wyłącznie phpinfo(32);
Podlinkuj sobie na innej stronie ten myfolder/costam.abc i zobacz w którym wierszu wskaże ci się strona z której wszedłeś. Proste. Dokładnie to samo będzie z obrazkiem.
mirobor
21.02.2017, 20:46:26
Zrobiłem. W żadnym wierszu nie wskazuje mi URLa zewnętrznego serwera. Widzę, to co przesyłem w GET i lokalizację mojego imgeScript.php na moim serwerze. Żadnego urla z zewnątrz.
Dzięki, że Wam się chce pomimo, że mój biorytm intelektualny leży i kwiczy.
Tomplus
21.02.2017, 21:33:36
Więc skończmy temat, raz a porządnie:
Ja testowałem ów kod u siebie i otrzymałem stronę zewnętrzną. Na jednej domenie umieściłem obrazek.jpg, a na innej hotlink:
<img src='http://hotlinkowanadomena.pl/obrazek.jpg'>
Otrzymałem informację:
$_SERVER['HTTP_REFERER'] = "http://hotlinkujacy.net/podstrona/" - strona która "kradnie obrazek"
a zmienne:
$_SERVER['REDIRECT_URL'] => "obrazek.jpg" (alternatywnie [QUERY_STRING])
$_SERVER['REDIRECT_QUERY_STRING'] => name=obrazek (alternatywnie [REQUEST_URI)
informują mi który to obrazek jest "kradziony".
mirobor
21.02.2017, 23:23:29
Dzięki za łopatologię. Załapałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.