[php] pobieranie plikow tylko dla uwierzytelnionych

0

Tylko uwierzytelnieni uzytkownicy maja mozliwosc sciagania niektórych plików. Jednak możliwość ma być dodawana i odbierana. Jednak jak juz dam ktoremus z uzytkownikow mozliwosc pobierania to on moze zapisac URL pliku i jak odbiore mu mozliwosc to i tak ma URL i sobie pobierze nie bedac uwierzytelnionym. Macie jakis pomysl jak to obsluzyc? Plikow nie moge przenosic ani lepiej im nie zmieniac nazw na hashe.

z gory dzieki za pomysly

0

Zarys skryptu php dzialajacego tylko dla zalogowanych:

header("Content-Type: typ pliku");
echo file_get_contents("plik.cos");

i juz. Sciezki do pliku znac nie bedzie, wiec tylko po zalogowaniu przegladarka zwroci wlasciwa tresc pliku do pobrania.

0

zgadzam sie, tylko ze ta beda pliki .xls .cad itp i on musi miec mozliwosc zapisu na dysk :(

0

No to tak wlasnie zadziala. Jak podasz wlasciwy typ, to przegladarka zareaguje sciagnieciem, jezeli domyslnie taki plik sciaga. Np. wiekszosc przegladarek sciagnie .zip, a wyswietli pdf i jpg. Zalezy od ustawien przegladarki. Ale wiekszosc przegladarek sciaga nieznane typy (czyli wszystko co nie jest obrazkiem, plikiem .txt., pdf, itp - dla ktorych sa jakies standardowe akcje okreslone).

0

aha rozumiem, dzieki wielkie

0

przetestowalem Twój sposób
jest jeden mankament:
jezeli stosuje

header("Content-Type: application/pdf");
echo file_get_contents("plik.pdf");

czyli dla plików pdf, a ja np. mam ustawione automatyczne pobieranie pdfów na hdd a nie otwieranie w przegladarce. Przegladarka proponuje pobranie pliku który zawiera kod pdf-a ale nazywa sie download.php (czyli plik ktory zwiera wyzej wymieniony kod)

przez co użytkownik dostaje to co powinien ale nie znajac prawidlowego rozszerzenia nie moze otworzyc pliku...

da się jakoś wymusic na przegladarce propozycje pobrania oryginalnej nazwy pliku pdf?

mam nadzieje ze piszę w miare jasno

0

Przyklad z php.net

// przesyłamy plik PDF
header('Content-type: application/pdf');

// ustawiamy jego nazwę na downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// treść znajduje się w pliku original.pdf
readfile('original.pdf');
0

Ale przy takim rozwiązaniu jeśli ktoś będzie miał adres, to i tak sobie ściągnie ten plik i tak. Jak się przed tym zabezpieczyć?

0

Jaki adres? To skrypt wysyla plik, wiec moze zdecydowac czy go wyslac (zalogowany) czy nie.

0

Chodziło mi o to, jest plik /upload/pdf/moj.pdf oraz skrypt /download.php?plik=nazwa_pliku, który kontroluje, czy można ściągnąć plik, czy nie. Ale jeśli użyszkodnik wpisze www.moja.strona.pl/upload/pdf/moj.pdf, to po ptakach - skrypt zostanie ominięty. O to mi chodziło :)

0

No to nie dajesz pliku w dostepnym katalogu i juz ;)

0

dokladnie, poza public_html

tak samo zwykle trzymam plik do łączenia z baza (poza public_html)

dziala!

0

jeszcze jedno

czy na podstawie tego
http://www.webmaster-toolkit.com/mime-types.shtml

wszystko jedno czy wpisze dla plików z rozszerzeniem dwg
application/acad
albo
image/vnd.dwg
albo
image/x-dwg

?

1 użytkowników online, w tym zalogowanych: 0, gości: 1