Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Dostęp do galerii jedynie z poziomu www
Forum PHP.pl > Forum > Przedszkole
lipzky
Witam.

Aby opisać mój problem przytoczę przykład.

w katalogu głownym mam :
- plik index.php
- katalog zdjecia, a w nim:
* zdjecia w postaci ponumerowanych plików jpg (ex. 1.jpg, 2. jpg etc.)


Chciałbym, aby zdjęcia można było wyświetlać w pliku : index.php za pomocą <img src= ..>, ALE jednocześnie chciałbym zablokować dostęp z poziomu katalogu, czyli nie chciałbym, aby ktoś wpisał w przeglądarkę /zdjecia/1.jpg i wyświetliłoby mu się zdjęcie.

Podsumowując:-) Dostęp do zdjęć wyłącznie przez plik index.php

z góry dziękuje za zrozumienie i pomoc smile.gif
mmica
Hey ;]
Możesz zablokować dostęp do tego katalogu poprzez .htaccess i stworzyć taką "bramkę dostępu":
  1. <?php
  2. header('Content-Type: image/jpeg');
  3.  
  4. if(...) //sprawdzanie czy np. haslo sie zgadza lub czy uzytkownik przychodzi ze stronych z ktorej powinien.
  5. {
  6. include './zdjecia/'.$var.'.jpg'; //var = nazwa zdjecia przekazana np. GET'em (pamietaj o bezpieczenstwie!)
  7. }
  8. ?>

Wtedy do obrazka odwoływałbyś się tak:
  1. <img src="bramka.php?zdjecie=x" />
Taki jest mój pomysł, choć pewnie są lepsze rozwiązania..

Pozdrawiam,
mmica
lipzky
Witaj.

Dziękuje za tak szybką odpowiedź.

Ale czy zdjęcie można dać poprzez include? ;-) bo coś mi nie działa smile.gif


//

Niezły sposób na "maskowanie" :-) Dziękuje, bo nie znałem. Jedak wyświetlanie działa. zrobiłem htaccess, ale nie radzę sobie z warunkiem.
A może CHMODAMI dałoby radę to obskoczyć?

Pozdrówki

// OK..

Chyba się udało. Zamiast htaccess zrobiłem CHMOD 700 dla katalogu, a w pliku pobierającym zdjęcie dałem sprawdzanie, czy jest STAŁA ma wartość taką, jaką generuje plik index.php

Hmm.. nie do końca działa. Bo można plik inludujący zdjęcie wywołać w przeglądarce i zmienić id i działa... bo ze zmienną coś nie wypaliło:(
MiChaSSs
Kolega się chyba pomylił, myślę, że chodziło Mu o:
  1. if() // Sprawdzanie użytkownika
  2. {
  3. for($nr_zdjecia = 1; $nr_zdjecia < 11; $nr_zdjecia++) // Zdjecia od 1 do 10
  4. {
  5. $zdjecie = $nr_zdjecia.'.jpg';
  6. echo('<img src="zdjecia/'.$zdjecie.'"/><br>');
  7. }
  8. }


Nie wiem, na jakim systemie odpalasz ten skrypt, ale pamiętaj, że na Linuxie wielkość liter MA znaczenie (nazwy zdjec, katalogów, rozszerzenia itd.), na Windowsie nie. O zabezpieczaniu folderu znajdziesz kilka informacji tutaj http://pl.wikipedia.org/wiki/Htaccess pozdr MD

P.S Edit poszedł przed wysłaniem tego posta
lipzky
Witaj.

System jest na linuxie.

Ma to dokładnie działać na zasadzie, że osoba z zewnątrz nie powinna mieć możliwości przejrzenia wszystkich zdjęć poprzez podmienianie ID.
Na stronie wyświetlą się tylko te zdjęcia, których użytkownicy zaznaczyli opcję :"pokaż profil na stronie".

Jeżeli chodzi o password, jak to zaimplementować do warunku w pliku php?


ADeM
MiChaSSs: to chyba Tobie się pomyliło biggrin.gif
MiChaSSs
Cytat(ADeM @ 1.12.2010, 23:22:32 ) *
MiChaSSs: to chyba Tobie się pomyliło biggrin.gif

Nigdy wcześniej nie widziałem, żeby ktoś w ten sposób ładował zdjęcia, dla mnie to troche dziwny twór winksmiley.jpg Mnie include kojarzy się głównie z incudowaniem (;-)) plików tekstowych (np. plików php z definicjami funkcji).


@lipzky -> Wydaje mi się, że sposób poniżej powinien Cię satysfakcjonować:
  1. <?php
  2.  
  3. if ($_SERVER['PHP_AUTH_USER'] == 'uzytkownik' && $_SERVER['PHP_AUTH_PW'] == 'haslo')
  4. {
  5. for($nr_zdjecia = 1; $nr_zdjecia < 11; $nr_zdjecia++) // Zdjecia od 1 do 10
  6. {
  7. $zdjecie = $nr_zdjecia.'.jpg';
  8. echo('<img src="zdjecia/'.$zdjecie.'"/><br>');
  9. }
  10. }
  11. else
  12. {
  13. header('WWW-Authenticate: Basic realm="My Realm"');
  14. header('HTTP/1.0 401 Unauthorized');
  15. echo 'Unauthorized';
  16. }
  17. ?>


Login to: "uzytkownik" hasło to "haslo". Pozdr MD
mmica
Hey ;]

include() służy do dołączenia zawartości pliku, a więc w tym wypadku w plik php zostanie wpisany jpg, ot tak po prostu. Dzięki header() przeglądarka będzie wiedziała, że ma do czynienia z obrazem i go zinterpretuje.

sprawdzanie hasła wyglądałoby tak:
  1. <?php
  2. if($auth == sha1('Twoje haslo'))
  3. {
  4. ...
  5. }
  6. ?>

Hash (sha1) hasła/kodu dostępu możesz przesyłać zmienną sesyjną. Ale moim zdaniem lepiej byłoby sprawdzić skąd przychodzi użytkownik i wtedy (jeżeli przyszedł z galerii) wyświetlić mu obraz.

@MiChaSSs: A jak to ma zabezpieczyć bezpośredni dostęp do zdjęć? To chyba może tylko galerię zabezpieczyć przed wyświetleniem. Jeżeli jestem w błędzie - oświeć mnie.

Pozdrawiam,
mmica
MiChaSSs
Cytat(mmica @ 2.12.2010, 06:48:05 ) *
@MiChaSSs: A jak to ma zabezpieczyć bezpośredni dostęp do zdjęć? To chyba może tylko galerię zabezpieczyć przed wyświetleniem. Jeżeli jestem w błędzie - oświeć mnie.

To właśnie miałem na myśli.
lipzky
Heja:)

Nadal problem nie jest rozwiązany. Kwestia z CHMOD'ami nie działa, a myślałem, że wpadłem na genialny sposób tongue.gif
Na razie tylko sposób mmica działa częsciowo.

Czy mogę zabezpieczyć katalog jakoś z poziomu: .htaccess poprzez "deny from all" i wstawić pozwolenie "allow from" dla osób, które odwiedziły stronę? Czyli dostęp do index.php dla wszystkich, a dostęp do katalogu zdjecia tylko dla strony index.php?

Pozdrówki:)
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.