[PHP] Obrazek wyświetlony na stronie czy bezpośrednio?

0

Witam.

Mam następujący problem.
Muszę rozróżnić, czy tworzony dynamicznie obrazek został wyświetlony na stronie (gdzieś wewnątrz treści) czy bezpośrednio pokazany przez przeglądarkę (gdy w belce tytułu jest jego adres).

Wiem o HTTP_REFERER, ale ma on jedną decydującą w moim przypadku wadę.
Wszystko działa pięknie o ile ktoś nie zamieści bezpośredniego linka do obrazka na swojej stronie.
Wówczas REFERER zostanie wysłany, a obrazek mimo wszystko pokazany na pustej stronie.

Jest jakiś inny sposób, aby rozróżnić sposób jego wyświetlenia?

Pozdrawiam. :)

0

no to jeszcze sprawdzasz czy referer = twojej stronie
ale to zła metoda - firewall może zablokować ten nagłówek i przeglądarka też może mieć jakiś plugin czy coś żeby go nie wysyłać

możesz zrobić np coś w rodzaju tokenów
przy wyświetleniu strony losujesz jakąś wartość, wstawiasz do bazy danych i dopisujesz do linka obrazka w stylu obrazek.jpg?costam=FD423AB4778DEC432
a obrazek.jpg podmieniasz na skrypt, który sprawdzi czy wartość jest w bazie i jeśli tak to wysyła obrazek, a jeśli nie to znaczy że obrazek został wyświetlony w inny sposób - z innej strony lub bezpośrednio przez przeglądarke i wtedy robisz co chcesz
przy tym jeszcze musi usunąć ten "token" z bazy bo inaczej będzie można link po prostu skopiować
tylko są dwa minusy tego rozwiązania:

  1. dość skomplikowane jak na taką pierdółkę
  2. jeśli to ma posłużyć zmniejszeniu transferu to raczej przyniesie odwrotny skutek, bo obrazki nie będą mogły zostać zcache'owane przez przeglądarkę, no chyba że tokeny będziesz przypisywać do sesji i pobawisz się w nagłówki - tylko że wtedy obrazek będzie mógł sobie wyświetlić w samej przeglądarce o ile wcześniej odwiedził go przez stronę

nie wiem co chcesz uzyskać ani po co

0

Mówiąc w skrócie, zależy mi na tym, aby mając jedną ścieżkę do obrazka można było jej używać zarówno do wklejania obrazka na forum (wtedy zdjęcie automatycznie będzie się zmniejszać) lub po prostu do wyświetlenia go (czyli po otwarciu samego zdjęcia w przeglądarce pojawiałoby się ono w naturalnych rozmiarach).

Tak więc jak widzisz, niestety tokeny odpadają.

W ogóle jest coś takiego możliwe? :P

0

Da się zrobić antyhotlink przy pomocy .htacces (ale tutaj tez jest problem z nagłówkiem referer)

Możesz też zrobić coś bardziej hardcorowego, a mianowcie :
Na swojej stronie i forum zapisywać w sesji jakaś wartość (ma służyć tylko kontrolnie), a obrazki serwować poprzez skrypt php
(skrypt wpierw by sprawdzał czy sesja i zmienna sa ustawione jest tak to przy pomocy header() wysyłał by nagłówki pliku jpg, a potem wysyłał go do usera). Do tego przy pomocy htacces można zamaskować adresy (ustawić odwoływania do plików jpg na image.php). Wszystko to dało by efekt ze obrazki ładowały by się tylko na twoich stronach :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1