Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod rewrite po raz kolejny
Forum PHP.pl > Forum > Serwery WWW
mastah84
Witam!
mam taki problem, chciałbym zeby pliki graficzne były wyświetlane tylko przez jedną konkretna strone/skrypt php. Zeby nie można było dostać sie do obraza przez podanie tylko adresu docelowego (np. htp://mojastrona.com.pl/zdjecie1.jpg). To zdjęcie ma byc wyświetlane tylko przez stronę http://mojatrona.com.pl/show.php....

czy jest jakieś rozwiązanie?

pozdrawiam
Krzysiek
kicaj
Mysle ze cos takiego bedzie dobre:
Kod
#inicjacja
RewriteEngine On
#ustawienie sciezki bezwglednej
RewriteBase /
#okreslenie rozszerzenia plikow
RewriteCond %{REQUEST_URI} \.(gif|jpg)$
#ustawienie blokady - dostepu
RewriteRule .* - [F]
mastah84
Rzeczywiście nie można otworzyć obrazka po bezpośrednim odwołaniu się do adresu. Tylko, że w tym momencie również przez strone nie można go otworzyć.
Chodzi o to zeby strona otwierała obraz, tylko bezposrednie podanie odresu do przeglądarki nie pozwalało na jego otwarcie.
kicaj
A odwolanie do obrazka jak wyglada?
localhost/show.php?nazwa=plik.jpg ? Jesli tak to wiadomo dlaczego nie otwiera
Zrob cos takiego /show.php?nazwa=plik a w pliku dodaj rozszerzenie

Opisz bardziej co chesz zrobic
mastah84
odwołanie przez skrypt wygląda tak:
Kod
http://domena.pl/show_2.php?&gal=5&foto=Grodk1629.jpg


skrypt wtedy odwołuje się do konkretnego katalogu ($_SESSION['nick']/5) i pliku (Grodk1628.jpg).

a jakie ma znaczenie odwołanie sie do pliku z rozszerzeniem i bez rozszerzenia?

docelowo jest to galeria dla klientów z ich zdjeciami, po zalogowaniu kazdy klient ma dostęp do swoich galerii i zdjec. Tylk ze znając login, numer galerii i nazwe plik mozna sobie otworzyc zdjecie przez wpisanie adresu w przegladarce.
wyglada to tak:
adres.strony/[login]/[nr_gal]/[nazwa_pliku]

chcę poprostu zeby nie można bylo otworzyć bezpośrednio pliku (przez wpisanie adresu ze w przegladarce), a jedynie przez skrypt php.
kicaj
W tresci mod_rewrite zastosowalem wyrazenie regularne dla plikow ktore koncza sie na .gif lub .jpg takze odpada taki model. Wyjsciem moze byc zmiana kolejnosci na: show_2.php?foto=Grodk1629.jpg&gal=5
Ale nie jest to rozwiazanie poprawne!

Zrob cos takiego: show_2.php?gal=5&foto=Grodk1629, a w pliku show_2.php zrob tak:
  1. <?php
  2. echo '<img src="". $nazwa_pliku .".jpg" />';
  3. ?>
mastah84
niestety nie pomogło
sad.gif

obrazy nie są widziane również przez stronę.

przeniosłem sie z testami na moją prywatną stronę:
http://adstudio.home.pl/mastah1/?gal=1&photo=1
adres do zdjecia:
http://adstudio.com.pl/mastah1/gal/1/_MG_5747.jpg
w tym adresie nie jest podawana nazwa pliku, nazwa zdjecia jest pobierana z bazy danych po numerze 'photo'.
Kod metody wyswietlajacej zdjecie wyglada tak:
Kod
<img src="gal/'.$this->_gallery.'/'.$this->_file_name.'" alt="'.$this->_description.'" />

gdzie zmienne są pobierane z bazy danych na podstawie id zdjecia ( photo ).

Czy nie można napisac takiej reguły która pozwala otwierać plik tylko jesli w adresie jest pewien fragment tekstu (np. photo, albo cokolwiek co nie występuje w samej nazwie? )
kicaj
Link nr 2 jest 404
mastah84
sorry, miało być
http://adstudio.home.pl/mastah1/gal/1/_MG_5747.jpg

w adresie jest home.pl nie com.pl
wyswitla błąd 403
kicaj
to samo...
kicaj
Kod
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://adstudio.home.pl/mastah1/index.php.*$ [NC]
RewriteRule .*.(jpg|gif|png)$ http://adstudio.home.pl/mastah1/nie_ogladaj_w_ten_sposob [NC]

Powinno dzialac:)
mastah84
dzięki, jesteś Wielki smile.gif
wszystko działa jak powinno, dodałem do reguł kilka innych stron co powinny korzystać z obrazów i jest git.

pozdrawiam
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.