Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Download z ukryciem orginalnej lokalizacji pliku.
marek44
post 3.06.2009, 11:49:58
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 3.06.2009

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


Witam.
Mam pytanie jak zrobić download żeby orginalny adres pliku pozostał ukryty, a pobieranie odbywało się za pomocą jednorazowego linku, np. użytkownik zrobił co trzeba i dostaje adres do pliku download.php z odpowiednimi parametrami w tablicy get: download.php?id=05&linkid=WJDMATJ856984 gdzie id=05 to id pliku do pobrania którego orginalny adres jest zapisany w bazie, a linkid to jednorazowy identyfikator.

Jak komuś się nie chce pisać kodu to niech chociaż napisze jak to się robi i czego mam szukać.
Dzięki z góry.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post 3.06.2009, 11:53:38
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl2.php.net/manual/pl/function.header.php
Przykład #1


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Maveral
post 3.06.2009, 12:21:59
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Zaciekawileś mnie tym, więc sam sobie szybko sprawdziłem pierwsze co mi przyszło do głowy, a więc pokombinowanie z header(Location). Wyciągam z bazy ścieżkę pliku o id=ileś_tam, a następnie wrzucam tę ścieżkę do zmiennej i pakuję zmienną do header(Location). Użytkownik nie widzi adresu pliku i wszystko gra winksmiley.jpg

Ten post edytował Maveral 3.06.2009, 12:23:11
Go to the top of the page
+Quote Post
erix
post 3.06.2009, 12:23:11
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zobaczy. Może w Twojej przeglądarce nie widać, ale zobaczy: Nie o to chodziło - attachment.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
cojack
post 3.06.2009, 12:39:44
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Najlepiej jest ładować pliki do bazy. wtedy nie masz takiego problemu.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
erix
post 3.06.2009, 15:01:26
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To najgorsze z możliwych wyjść...

W bazie trzyma się adresy do plików, a nie je same...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
cojack
post 3.06.2009, 15:54:44
Post #7





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Jak kto lubi, ja sobie trzymam pliki w bazie winksmiley.jpg


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Magan
post 4.06.2009, 00:15:20
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 3.06.2009

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


Też miałem problem taki problem z downloadem. Ale napisałem skrypt, podzielę się z nim. smile.gif

No więc działa na dwóch plikach i folderze z plikami - ot, żeby nie było bałaganu na serwerze. winksmiley.jpg Pliki te są małe, oczywiście można je rozbudować, dodać jakieś zabezpieczenia, opcję pobierania id z bazy itd.. Ja potrzebowałem zwykły download.

Pierwszy plik znajduje się w głównym folderze serwera:
(http://www.example.com/download.php)
  1. <?
  2. if(isset($_GET['downit'])) {
  3. $downit=$_GET['downit'];
  4. Header ('Location: download/downit.php?downit='.$downit);
  5. } else {
  6. echo ('Nie znaleziono pliku!');
  7. }
  8. ?>


Drugi plik znajduje się w folderze z plikami, na przykład w folderze download którego nazwę użyłem w pierwszym pliku.
(http://www.example.com/download/downit.php)
  1. <?
  2. $downit=$_GET['downit'];
  3. Header ('Content-Disposition: attachment; filename="'.$downit.'.zip"');
  4. ?>


Jak to działa i o co wogóle chodzi? Już tłumaczę. Na jakiejś podstronie serwisu która znajduje się w głównym folderze (to ważne gdzie!) dajemy link do pliku o nazwie muzyka.zip: http://www.example.com/download.php?downit=muzyka . Gdy kliknie się na ten link serwer przechodzi do strony http://www.example.com/download/downit.php?downit=muzyka - przenosi za pomocą GET id pliku (nazwę) do pliku downit.php, który wysyła info do przeglądarki że coś trzeba pobrać.

Czemu tak to skomplikowałem? Nie wiedzieć czemu serwer na którym znajduje się moja strona gdy wpisywałem zamiast ('Content-Disposition: attachment; filename="'.$downit.'.zip"') w downit.php w folderze download, od razu ścieżkę w download.php w głównym folderze, czyli ('Content-Disposition: attachment; filename="download/'.$downit.'.zip"') zamiast pliku pobierała sie strona o tej nazwie z rozszerzeniem *.zip.html sad.gif

Poza tym ten skrypt mam usterkę chyba nie do naprawienia. Sprawdzałem go na 3 przeglądarkach (opera, firefox i IE). W IE gdy ściągałem wbudowanym menadżerem ściągało się bez problemów, gdy ściągałem wbudowanym w firefoxie ściągało się też bez problemów. Problemy się zaczęły gdy pobierałem dodatkiem do firefoxa - akceleratorem pobierania. Ściągało tak jak przy skrypcie który próbowałem na początku, ściągał się plik html, z operą było to samo.

Mam nadzieję że chodź trochę pomogłem. Może ktoś mógłby coś tu zmienić, ciekaw jestem czy da się to naprawić lub uprościć. winksmiley.jpg
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: 14.08.2025 - 10:26