Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pliki do ściągniecia tylko dla zalogowanych uzytk.
Forum PHP.pl > Forum > PHP
Wedrowiec
Witam - pytanie jak w temacie -pliki do ściągniecia tylko dla zalogowanych użyszkodników.
Tzn: leżą pliki na serwerze www, pobrać je mogą tylko osoby dla których spełniony jest pewien warunek (tutaj określona wartość zmiennej sesyjnej).
Jak to zrobić ?
Mam nadzieję, że w miare jasno napisałem biggrin.gif
wassago
hmm... o dziwne rzeczy sie pytasz... przeciez wystarczy mala instrukcja warunkowa:
  1. <?php
  2.  
  3. if ( (tutaj określona wartość zmiennej sesyjnej) )
  4. {
  5.  
  6. // przekierowanie
  7.  
  8. } else {
  9.  
  10. echo 'prosze sie zalogowac';
  11.  
  12. }
  13.  
  14. ?>
Zepco
A jeśli ktoś zna dokładną ścieżkę do pliku?
wassago
to mimo to musi byc spelniony warunek:
  1. <?php
  2.  
  3. if ( (tutaj określona wartość zmiennej sesyjnej) )
  4. {
  5.  
  6. // ustawienie ciacha lub sesji i przekierowanie
  7.  
  8. } else {
  9.  
  10. echo 'prosze sie zalogowac';
  11.  
  12. }
  13.  
  14. ?>
Wedrowiec
Cytat(wassago @ 2004-07-01 15:31:21)
to mimo to musi byc spelniony warunek:
  1. <?php
  2.  
  3.     if ( (tutaj określona wartość zmiennej sesyjnej) )
  4.     {
  5.  
  6.         // ustawienie ciacha lub sesji i przekierowanie
  7.  
  8.     } else {
  9.         
  10.         echo 'prosze sie zalogowac';
  11.  
  12.     }
  13.  
  14. ?>

no dobra ale plik lezy fizycznie na serwerze - ktos kto zna dokladną ścieżkę bez problemu sobie ściągnie
CyklOP
  1. <?php
  2.  
  3. header(&#092;"Cache-Control: \");
  4. header(&#092;"Pragma: \");
  5. header(&#092;"Content-type: application/force-download\");
  6. header('Content-Disposition: attachment; filename=\"'.$name.'\"');
  7. header('Content-Length: '.filesize($filenamepluspath)); 
  8. sleep(1);
  9.  
  10. readfile('$filenamepluspath');
  11.  
  12. ?>
Wedrowiec
hmmm fajnie ja chyba głupi jestem - gdzie ma być umieszczony ten plik i w jaki sposób ma byc zabezpieczony? tak zeby ktoś kto zna dokladny adres pliku nie mógł go sobie ściągnąć ?

czyli mam plik pod adresem

http://www.moj_adres.pl/pliki/pliczek.zip

wklejenie adresu w przeglądarce ma wywalić błąd/info jakieś, zalogowany użytkownik ma mieć możliwość sciągnięcia tego pliku.
Kombinowałem że może trzeba zabezpieczyć katalog na serwerze (na hasło) ale jak z php się do niego dostać ?
CyklOP
Nie nie nie winksmiley.jpg nie rozumiesz istoty smile.gif

Masz plik download.php

w nim:

  1. <?php
  2. $sciezkadopliku='downloady/';
  3. $nazwapliku=$_GET['d'];
  4.  
  5. #UWAGA, teraz sprawdzasz czy osoba jest zalogowana, wstaw swoją funkcję
  6. if (not(czyzalogowany()))
  7. die('Zaloguj się!');
  8.  
  9. #UWAGA, sprawdzasz czy plik jest udostępniany w ogóle do downloadu (aby ktoś nie wpisał np. index.php
  10.  
  11. if (not(czyudostepniony($nazwapliku)))
  12. die('Nie kombinuj!');
  13.  
  14. header(&#092;"Cache-Control: \");
  15. header(&#092;"Pragma: \");
  16. header(&#092;"Content-type: application/force-download\");
  17. header('Content-Disposition: attachment; filename=\"'.$nazwapliku.'\"');
  18. header('Content-Length: '.filesize($sciezkadopliku.$nazwapliku)); 
  19. sleep(1);
  20.  
  21. readfile($sciezkadopliku.$nazwapliku);
  22.  
  23. ?>


Uruchamiasz go poprzez:
http://twojastrona.pl/download.php?d=teksty.txt

Albo zobacz jak to działa u mnie na http://replays.pl :
http://replays.pl/sciagnij/777 <-- kliknij to i zobacz co się dzieje smile.gif
Wedrowiec
hmm co sie dzieje? sciagnalem pliczek - ~250 kb, cos z warcrafta....
a wlasnie nie powinienem miec prawa do sciagniecia tego !
matid
Cytat(Wedrowiec @ 2004-07-01 16:53:28)
hmm co sie dzieje? sciagnalem pliczek - ~250 kb, cos z warcrafta....
a wlasnie nie powinienem miec prawa do sciagniecia tego !

Ten skrypt nie miał Ci pokazać możliwości blokowania a jedynie przykład pobierania takiego pliku. W tej wersji co podał CyklOP wszystko będzie działać bez problemu, dzięki temu kawałkowi kodu:
  1. <?php
  2. if (not(czyzalogowany()))
  3. die('Zaloguj się!');
  4. ?>
Wedrowiec
ok, wielkie dzięki, będę walczył :]
teraz czas z roboty do domu uciekać, jeszcze pewnie Was pomęczę winksmiley.jpg
Dravo
Wędrowiec: php nie ma za zadanie obsługiwać twojego serwera (zapewniać np. jego bezpieczeństwa) od tego jest serwer ftp lub http... php może jedynie wykonać kod dzięki któremu będziesz mógł pobrać plik. Więc tak jak pokazywali to wyżej inni możesz utowrzyć taki kod zapewniający dostęp do pliku, ale dzięki php nigdy nie zabronisz, aby bezpośrednio ktoś pobrał plik z serwera (poprzez np. http), od tego jest serwer ftp/http i jego ustawienia...
Wedrowiec
hmm nie pisałem, że php ma zabezpieczać pliki.

Dobra to zmiana lekka pytania: mam katalog zabezpieczony hasłem (przez .htaccess), jak dostać się do niego z poziomu php, jak udostępnić go do ściągania.

Plus wszelkie inne znane Wam metody (zabezpieczone) na download plików tylko dla wybranych użytkowników smile.gif
GeoS
Wrzucasz .htaccess'a z odpowiednimi wpisami (chroniacymi przed direct dl dla serwera Apache) do katalogu, w ktorym trzymasz pliki do sciagniecia.

Budujesz skrypt php do sciagania w taki sposob, zeby spelnial warunki dostepu ustawione po stronie serwera (.htaccess) i po sprawie.
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.