Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie pliku z katalogu chronionego hasłem
Forum PHP.pl > Forum > PHP
Skyline
Witam

W jaki sposób pobrać plik z katalogu chronionego hasłem, a dodatkowo nie znając nazwy pliku, tylko mając do dyspozycji url w stylu: Download.aspx?file=Gp710gSKmjxctvITnLuwpsKvy3wsaZFn ?

Udaje mi się pobrać ten plik za pomocą curl'a, ale nie wiem w jaki sposób po pobraniu go do zmiennej, wysłać go do przeglądarki, tak aby użytkownik mógł zapisać plik na dysku.

Pozdrawiam
korro
Poczytaj o header: http://php.net/manual/en/function.header.php
może o to Ci chodzi.
Skyline
Chciałbym żeby to było tak proste jak za pomocą header, ale w tym przypadku raczej sie tym nie da.

Póki co kod pobierajacy plik do zmiennej wygląda tak:

  1. $ch = curl_init($url);
  2. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($ch, CURLOPT_USERPWD, '$username:$password');
  5. $data = curl_exec($ch);


Plik zapisany jest do zmiennej $data i teraz jak go wysłać do przeglądarki tak żeby użytkownik mógł go zapisać na dysk?
thek
Nie po to ktoś na nie Twoim serwisie ustawiał ukrywanie ścieżki pliku na serwerze by każdy sobie ściągał pliki jak leci smile.gif Chcesz udostępniać pliki? To sam je hostuj, a nie podpinasz się do obcego serwera, bo żal Ci transferu i/lub miejsca na własnym. Już na oko po linku widać, że koleś ma ten skrypt po to, by takim jak Ty utrudnić proceder. Z tego co widzę parametrem do skryptu jest hash md5, który zapewne jest kluczem do odpowiedniego wpisu w bazie, identyfikującego ścieżkę do pliku. Tego nie da się obejść. Możesz najwyżej próbować rozkminić strukturę serwera, ale zapewne dostęp do katalogu jest przez htaccess blokowany dla wszystkiego poza tym skryptem.
Musisz więc w dalszej części skryptu wyłapać jakie headery są Ci przesyłane przez serwer z jakim się łaczysz, byś mógł rozpoznać z czym masz do czynienia. Sama zawartość zmiennej nic Ci nie da, bo nawet nie wiesz co przesyłasz. Czy to zip, exe czy może jpg?
Skyline
Thek - nie moge Ci napisac co to za serwer i dlaczego sa te pliki ukrywane bo to poufne dane. Pytanie dotyczy php: jak plik pobrany curlem wyslac do przegladarki tak by uzytkownik mogl go zapisac na swój dysk.

Znalazłem taki sposób:

http://wortal.php.pl/phppl/wortal/artykuly...ysylanie_plikow

I można by go zaimplementować, jednak skrypt ten najpierw pobrany plik z zewnętrznego serwera zapisuje w swoim katalogu, a następnie ten plik mógłby zostać wysłany do przeglądarki za pomocą funkcji header().

Jednak wolałbym uniknąć pośredniczenia lokalnego serwera i przesyłać plik bezposrednio do uzytkownika do przeglądarki. Mogę to zrobić stosujac funkcje header() i bez udziału curl przekazywac plik ze zdalnego serwera do przegladarki uzytkownika jednak w tej sytuacji mozna podejrzec haslo autoryzacyjne co nie jest wskazane.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.