Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Download z ukryciem orginalnej lokalizacji pliku.
marek44
post
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
Post #2





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




http://pl2.php.net/manual/pl/function.header.php
Przykład #1
Go to the top of the page
+Quote Post
Maveral
post
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Maveral 3.06.2009, 12:23:11
Go to the top of the page
+Quote Post
erix
post
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.
Go to the top of the page
+Quote Post
cojack
post
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.
Go to the top of the page
+Quote Post
erix
post
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...
Go to the top of the page
+Quote Post
cojack
post
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Magan
post
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. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

No więc działa na dwóch plikach i folderze z plikami - ot, żeby nie było bałaganu na serwerze. (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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ć. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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: 24.09.2025 - 15:57