Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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 winksmiley.jpg.


--------------------
'
Go to the top of the page
+Quote Post
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)


--------------------
The battle that you fight cannot be won.
eSee webdesign - projektowanie stron www
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


--------------------
created by chomiczek
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


--------------------
NIE TRZEBA BYĆ ŚWIETYM, ABY RATOWAĆ ŻYCIE - WYSTARCZY BYĆ CZŁOWIEKIEM!
------------------------------
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 smile.gif ) pojawia sie "trwa pobieranie z witryny" + pelna sciezka... 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


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:20