Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dostęp do plików
EpureLight
post 13.03.2011, 23:23:28
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.09.2009

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


Witam!

Tworzę portal internetowy, na którym stworzyłem system logowania w php. Mam jednak jeden wielki problem. Otóż dla osób zalogowanych oferuje specjalny kontent niewidoczny dla użytkowników niezarejestrowanych. Są to podcasty oraz spakowane pliki w rar i zip. Problem polega na tym, że dostęp do tych plików, mimo systemu logowania jest dostępny z poziomu adresu. Tj. użytkownik nie ma dostępu do zasobów, jednak gdy wpisze w pasek adresu przeglądarki adres docelowy do pliku (np. spakowanego pliku) to może go pobrać i obejrzeć. Czy jest jakiś sposób by temu zapobiec?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
d3ut3r
post 13.03.2011, 23:32:32
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Wydaje mi się, że najprościej wyrzucić pliki poza katalog widoczny z sieci a gdy użytkownik chce plik ściągnąć wysyłać go przez php np. za pomocą readfile i oczywiście odpowiednich nagłówków. Jeżeli nie masz dostępu do katalogu nadrzędnego możesz użyć .htaccess


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
mat-bi
post 14.03.2011, 01:32:12
Post #3





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Po prostu, jak mówi kolega wyżej, daj to do folderu(nawet moze być widoczny z sieci, np. podfolder),ale wszystkie zapytanie przekierowuj na plik php, który będzie sprawdzać prawa do pliku.
Go to the top of the page
+Quote Post
EpureLight
post 14.03.2011, 07:13:36
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.09.2009

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


Mniej więcej rozumiem jak to ma działać, i rozwiązanie wydaje się proste. Nie mniej jednak nie wiem jak sprawić, by użytkownik wywołujący dany plik był przekierowywany do pliku php który mu albo udostępni albo nie udostępni oglądanie go i pobieranie. W pliku .htaccess da się to w jakiś sposób wyznaczyć? Prosiłbym was o jakąś wskazówkę jak to wykonać lub ew. jakieś nakierowanie na to gdzie takich informacji szukać.
Tak w ogóle to chcę zaznaczyć, że cenie sobie bardzo wasz poświęcony czas wink.gif

Ten post edytował EpureLight 14.03.2011, 07:21:01
Go to the top of the page
+Quote Post
binbash
post 14.03.2011, 12:04:35
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 8
Dołączył: 28.12.2010
Skąd: Szczecin

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


Użytkownik nie ma wywoływać pliku który chce ściągnąć tylko plik php z odpowiednim parametrem identyfikującym ten plik (jeżeli trzymasz ścieżki dostępu do plików gdzieś w bazie to może być np id wiersza np. http://twoja.strona/download.php?file=23). W pliku download.php pobierasz ścieżkę do pliku, wysyłasz odpowiednie nagłówki np.
  1. header('Content-Transfer-Encoding: binary');
  2. header('Content-Type: audio/mpeg');
  3. header("Content-Disposition: attachment; filename=\"".jakas_twoja_nazwa_pliku.".mp3\"");

i w końcu wysyłasz plik np przez:
  1. readfile($twoja_sciezka_do_pliku);

Natomiast w katalogu w którym trzymasz swoje pliki tworzysz plik .htaccess i umieszczasz w nim:
<Files *.*>
order deny,allow
deny from all
</Files>




Go to the top of the page
+Quote Post
EpureLight
post 14.03.2011, 19:46:05
Post #6





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.09.2009

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


Rozwiązanie działa lecz mam jeszcze mały problem z wywoływaniem pliku. Chce, by załadowała się strona i na tej stronie ten plik. I teraz gdy to Robie to wychodzi mi jeden z dwóch błędów:

1.Gdy wywołam go na początku to tylko pokazuje się dany obrazek, strona nie.
2.Gdy wywołam go później na swoim miejscu, to wychodzi błąd "headers already send".

Na pewno gdzieś popełniam błąd ale nie mam pojęcia gdzie.
Go to the top of the page
+Quote Post
binbash
post 14.03.2011, 19:51:46
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 8
Dołączył: 28.12.2010
Skąd: Szczecin

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


Nie za bardzo rozumiem, na stronie chcesz porobić linki, tak?

Ten post edytował binbash 14.03.2011, 19:52:57
Go to the top of the page
+Quote Post
EpureLight
post 14.03.2011, 20:10:35
Post #8





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.09.2009

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


Dobrze, to postaram się lepiej wyjaśnić.

Jest tak. Mam stronę, na której są podstrony z np. obrazkami. Te podstrony są dostępne tyko dla zalogowanych użytkowników. Są tam treści i rzeczy niedostępne dla innych. I teraz problem wygląda tak: Powiedzmy jestem użytkownikiem zalgowanym. Biorę obrazek, patrzę na jego adres docelowy - http://www.jakastrona.pl/chronione/obrazki/obrazek.jpg. Ten adres podaje koledze i ten bez zarejestrowania wpisując ten adres w pasek adresu wyświetla mu się ten obrazek, a nie powinien.

Propozycja z .htaccess w chrorionym folderze załatwiła ten problem. jednak teraz mam taki problem, że gdy jako użytkownik zalogowany ładuję stronę, to ten obrazek, który ma się gdzieś wyświetlać na stronie, nie wyświela sie. Pojawia się ikonka, jakby go w ogóle nie było. Teraz nie wiem jak sprawić, by ten obrazek się załadował. Obrazek ten jest zagnieżdzony na środku strony.
Go to the top of the page
+Quote Post
binbash
post 14.03.2011, 20:32:03
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 8
Dołączył: 28.12.2010
Skąd: Szczecin

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


Ok to może tak, jak masz ten swój plik php gdzie wyświetlasz obrazek to zamiast podawać bezpośrednią ścieżkę do pliku z grafika (tak ci na pewno nie odczyta) to:
  1. echo '<img src="display.php?name=obrazek.jpg>';

A w pliku display.php
  1. readfile('sciezka/do/plikow/'.$_GET['name']);
Go to the top of the page
+Quote Post
EpureLight
post 14.03.2011, 20:59:15
Post #10





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 12.09.2009

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


Super, rozwiązanie bardzo ładnie działa. Dziękuję bardzo za pomoc, sam bym sobie pewnie nie poradził wink.gif

Mam jednak jeszcze jeden problem. Ta metoda nie działa mi z podcastami. Gdy przeglądarka próbuje streamować video to od razu wyskakuje okienko "to view this movie, you must log in in to the area..."
Z obrazkami, tekstem itp działa fanstastycznie, jednak podcasty w moim przypadku są równie ważne. Czy da się to jakoś ominąć ?

Pozdrawiam

Ten post edytował EpureLight 15.03.2011, 00:01:01
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: 23.06.2025 - 23:09