Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Dostęp do galerii jedynie z poziomu www
lipzky
post 1.12.2010, 21:27:46
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.01.2010
Skąd: Gdz

Ostrzeżenie: (0%)
-----


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


--------------------
Wakacje dla każego :)
Go to the top of the page
+Quote Post
mmica
post 1.12.2010, 22:02:06
Post #2





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


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

Ten post edytował mmica 1.12.2010, 22:09:04


--------------------
"Imagination is more important than knowledge, because knowledge is limited." ~Albert Einstein
<?php $var = array('foo', 'bar'); ?>
Go to the top of the page
+Quote Post
lipzky
post 1.12.2010, 22:25:58
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.01.2010
Skąd: Gdz

Ostrzeżenie: (0%)
-----


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:(

Ten post edytował lipzky 1.12.2010, 23:08:44


--------------------
Wakacje dla każego :)
Go to the top of the page
+Quote Post
MiChaSSs
post 1.12.2010, 23:08:11
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował MiChaSSs 1.12.2010, 23:10:53
Go to the top of the page
+Quote Post
lipzky
post 1.12.2010, 23:20:53
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.01.2010
Skąd: Gdz

Ostrzeżenie: (0%)
-----


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?




--------------------
Wakacje dla każego :)
Go to the top of the page
+Quote Post
ADeM
post 1.12.2010, 23:22:32
Post #6





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

Ostrzeżenie: (0%)
-----


MiChaSSs: to chyba Tobie się pomyliło biggrin.gif


--------------------
Go to the top of the page
+Quote Post
MiChaSSs
post 1.12.2010, 23:37:58
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował MiChaSSs 2.12.2010, 00:15:02
Go to the top of the page
+Quote Post
mmica
post 2.12.2010, 06:48:05
Post #8





Grupa: Zarejestrowani
Postów: 60
Pomógł: 20
Dołączył: 30.11.2010
Skąd: 127.0.0.1

Ostrzeżenie: (10%)
X----


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

Ten post edytował mmica 2.12.2010, 06:57:45


--------------------
"Imagination is more important than knowledge, because knowledge is limited." ~Albert Einstein
<?php $var = array('foo', 'bar'); ?>
Go to the top of the page
+Quote Post
MiChaSSs
post 2.12.2010, 08:25:26
Post #9





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
lipzky
post 3.12.2010, 12:04:55
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.01.2010
Skąd: Gdz

Ostrzeżenie: (0%)
-----


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:)


--------------------
Wakacje dla każego :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 12:33