Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Php nadajacy prawa do pobierania plikow
Forum PHP.pl > Forum > Przedszkole
sat66
Witam!
Mam baze userow oraz katalog ze zdjeciami.
User loguje sie powiedzmy przez skrypt: loguj.php
Wyswietla mu sie zdjecie np. http:\\mojastrona\zdjecia\1.jpg
User wylogowuje sie.
Bedac wylogowanym wciaz moze wklepac "z palaca" adres http:\\mojastrona\zdjecia\1.jpg
i standartowo zdjecie mu sie otworzy bo zadanie obsluguje apache bez udzialu php.
Jak zrobic aby zdjecie otworzylo sie tylko gdy user jest zalogowany i tylko to zdjecie do
ktorego ten user ma miec dostęp?
Przychodza mi do glowy rozne "wariacje" z edycja .htaccess przez php ale chyba nie jest to
najlepsza droga...
Moze ktos ma jakies pomysly?
kfc4
W .htaccess dajesz, że każde żądanie kończące się na .jpg przechodzi do skryptu zdjecia.php?zdjecie=ITuWlasnieNazwaTegoZdjecia. W skrypcie dajesz sprawdzanie czy zalogowany etc. Jak sukces to wyświetlasz to zdjęcie, jak nie to wyświetlasz zdjęcie, że musi się zalogować (przez GD). Myślę, że zadziała.
Fifi209
Już gdzieś (W jakimś temacie) dawałem przykład jak można to zrobić:
  1. <?php
  2.  
  3. if (isset($_GET['image'])) {
  4. if (preg_match('/^[a-z0-9]+$/', $_GET['image']) && file_exists('images/'.$_GET['image'].'.jpg')) {
  5. $x = imagecreatefromjpeg('images/'.$_GET['image'].'.jpg');
  6. header('Content-Type: image/jpeg');
  7. imagejpeg($x);
  8. imagedestroy($x);
  9. }else{
  10. // niedozwolona nazwa lub plik nie istnieje
  11. }
  12. }else{
  13. // podaj nazwę pliku
  14. }
  15.  
  16. ?>


Przed tym dajesz warunek czy jest zalogowany czy nie. winksmiley.jpg
I tutaj zaznaczam jest to przykład

Można i tak:
  1. <?php
  2.  
  3. header('Content-Type: image/jpeg');
  4. echo file_get_contents('test.jpg');
  5. ?>

sat66
Super winksmiley.jpg
Dzieki podpowiedzi kfc4 udalo mi sie wygenerowac podobny kod smile.gif
Pociagne jednak jeszcze chwile watek - co jezeli bede chcial zabezpieczyc rowniez pliki
nie bedace obrazkami- typu .pdf, .doc, .xml,.... ?
Fifi209
Możesz przecież równie dobrze wrzucić .htaccess blokujący dostęp i potem czytać pliki i wysyłać odpowiedni nagłówek.
sat66
Przed chwila trafiłem pod adresem
http://pl.php.net/manual/pl/function.header.php
na ponizszy przyklad:
CODE
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>


co prawdopodobnie jest odpowiedzia na postawione pytanie (i tym o czym mowi ostatni post fifi209 winksmiley.jpg
kfc4
No musisz sobie poszukać jaki plik ma jakie nagłówki. I czy chcesz pobrać czy wyświetlić. Tu masz jak wymusić ściąganie. A najlepiej jakbyś już wszystko przepuścił przez jakiś skrypt i w nim sprawdzał co chce użytkownik. Nie ma się co bawić w umieszczanie pojedynczych wpisów. Lepiej 127.0.0.1/download/plik.pdf, 127.0.0.1/donload/plik.jpg. IMHO.
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.