Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> download plików, ukrywanie plików
mrm
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


Mam następujący problem: chciałbym aby pliki leżące na serwerze, były dostępne do ściągnięcia dopiero po zarejestrowaniu.
Ma to działać w następujący sposób: osoba rejestruje się i pojawia się lista plików. Chodzi mi w jaki sposób ukryć link do pliku, po to aby osoba nie zarejestrowana nie mogła ściągnąc pliku podając link np otrzymany od osoby, która posiada dostęp do strefy zarejestrowanej. (np
Kod
http://domena//file//plik.exe
) Proszę ładnie o pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nez
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 14.03.2006

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


Jeden z wielu sposobów:

zapisuj nazwy plików i ścieżki w bazie danych
- niezarejestrowanym wyświetlaj tylko nazwy plików
- zarejestrowanym nazwy podlinkowane do odpowiednich ścieżek (jeszcze lepiej przez skrypt - żeby nikt nie widział dokładnych ścieżek)
Go to the top of the page
+Quote Post
chomiczek
post
Post #3





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Hmm.. a gdybyś pobierł pliki np. poprzez plik, czyli masz plik np download.php
a w np. index.php masz
  1. <a href="donwload.php?plik=nazwaPliku">pobierz</a>


w pliku download.php wystrczy sprawdzić czy użytkownik jest zalogowany, jeśli tak to wysłać mu nagłówek z typem danego pliku.. jesli nie.. wysłać info o tym, że jest niezalogowany..

rozwiązań jest wiele bo mozesz np. określać jaki typ ma dany plik np. dopisując do nazwy 01nazwaPliku1 i potem sprawdzając nazwę pliku mozesz założyć, że najpierw jest 01 potem właściwa nazwa pliku 1 katalog

a u Ciebie to moze być tak:
  1. <?php
  2. if ($rozbite[0]=='01') $katalog = 'osobiste';
  3. if ($rozbite[2]=='1') $typ = 'jpg';
  4. ?>


a potem wywołać zdjęcie z takiej lokalizacji:
  1. <?php
  2. $katalog.'/'.$rozbite[1].'.'.$typ';
  3. ?>


oczywiście należałoby sprawdzic wcześniej logowanie o ktorym mówisz oraz czy plik faktycznie istnieje file_exists()" title="Zobacz w manualu php" target="_manual

Pzdr
Go to the top of the page
+Quote Post
RAFpl
post
Post #4





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.03.2006
Skąd: Włocławek

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


Ewentualnie można zrobic tak (bardzo łatwo jest napisać ten skrypt - operacja na plikach + sesja: nie potrzeba mysql):

-Wczytujesz zawartość katologu download do tablicy, a następnie sprawdzasz przez mechanizm sesji czy dana osoba jest zalogowana:
1. TAK - wyświetlasz listę plików, które są jednoczęśnie listą aktywnych linków.
2. NIE - wyświetlasz listę plików, ale bez linków.

Ten post edytował RAFpl 15.03.2006, 01:30:47
Go to the top of the page
+Quote Post
mrm
post
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


ok zrobilem w ten sposob, nazwy plikow przechowywane sa w bazie danych. zgodnie z sugestia pliki beda pobierane przez plik

Kod
download.php?id=


teraz jednak mam problem z zawartoscia pliku downlaod, oczywiscie najpierw sprawdza czy uzytkownik jest zalogowany, pozniej pobiera nazwe pliku na podstawie id z url-a, pytanie co dalej..., kombinowalem z header i wykombinowalem cos takiego

Kod
header("Location: http://".$_SERVER['HTTP_HOST']
                      ."/".dirname($_SERVER['PHP_SELF'])
                      ."/".$path


(oczywiscie $path przechowuje dostep do pliku - folder i nazwa pliku)

jednak w url-u pojawia sie pelna sciazka dostepu do pliku..

-----
ok cześciowo rozwiązalem ten problem poprzez to ze download.php nie otwiera sie w nowym oknie, tylko w tym samym i juz url nie ma sciezki dostepu do pliku, jednak na dole przegladarki (chyba to sie nazywa status (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) pojawia sie "trwa pobieranie z witryny" + pelna sciezka... (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)

Ten post edytował mrm 19.03.2006, 01:02:09
Go to the top of the page
+Quote Post
devnul
post
Post #6





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


rozwiązanie jest proste, ale czasochłonne, po sprawdzeniu uprawnień jeśli user ma prawa to wczytujesz zawartość pliku przez fopen itd, ustawiasz przez header(), odpowiedni typ mime, wielkość danych i nazwe pliku jaką sugerujesz do zapisu, a nastepnie przez echo wywalasz dane do przeglądarki, jeśli natomiast user nie ma dostepu to przekierowujesz na strone z błędem
Go to the top of the page
+Quote Post
mrm
post
Post #7





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


musi byc jakiś prostszy spoob tzn mniej czasochlonny ...
-------
hm bez przesady wcale to nie jest czasochlonne

Kod
<?php
header('Content-type: application/[COLOR=red]$typpliku'[/COLOR]);
header('Content-Disposition: attachment; filename="$plik"');
readfile($sciazka);
?>


Ten post edytował mrm 19.03.2006, 13:05:31
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.12.2025 - 02:58