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
Magan
post
Post #2





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

Posty w temacie


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: 10.10.2025 - 21:24