Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z force-download, problem z IE i zabezpieczeniem
infor946
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.02.2006

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


Witam

Korzystam z poniższej funkcji do downloadu plików:
  1. <?php
  2. function download_file($file)
  3.    {
  4.        set_time_limit(0);
  5.  
  6.        $rozmiar = filesize($file);
  7.        $filename=basename($file);
  8.        if(isset($_SERVER['HTTP_RANGE']) && preg_match('/bytes=([0-9]+)-([0-9]*)/', $_SERVER['HTTP_RANGE'], $bytes))
  9.        {
  10.            $start=(float)$bytes[1];
  11.            $stop=(float)$bytes[2];
  12.            if($stop<$start || $stop>=$rozmiar) $stop=$rozmiar-1;
  13.            $dlg=$stop-$start+1;
  14.        }
  15.  
  16.        if(!isset($dlg))
  17.        {
  18.            header('HTTP/1.1 200 OK');
  19.            header('Accept-Ranges: bytes');
  20.            header('Content-Length: '.$rozmiar);
  21.        }
  22.        else
  23.        {
  24.            header('HTTP/1.1 206 Partial Content');
  25.            header('Accept-Ranges: bytes');
  26.            header('Content-Length: '.$dlg);
  27.            header('Content-Range: bytes '.$start.'-'.$stop.'/'.$rozmiar);
  28.        }
  29.        header('Content-Type: application/force-download');
  30.        if(strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) header('Content-Disposition: attachment; filename="'.preg_replace('/./', '%2e', $filename, substr_count($filename, '.')-1).'"');
  31.        else header('Content-Disposition: attachment; filename="'.$filename.'"');
  32.        header('Content-Transfer-Encoding: binary');
  33.  
  34.        $fp=fopen($file, 'rb');
  35.        if(isset($start)) fseek($fp, $start);
  36.  
  37.        while(!feof($fp))
  38.        {
  39.            print(fread($fp,1024*8));
  40.            flush();
  41.        }
  42.        fclose($fp);
  43.    }
  44. ?>


wszystko niby działa ok, ale pod IE (uzywam wersji 7.0) po kliknieciu na link wyskakuje okienko "aby pomóc w zapewnieniu bezpieczeństwa program Internet Explorer zablokował tej witrynie możliwość pobierania plików..."

i nawet bardzo by mi to nie przeszkadzało, gdyby po kliknięciu na "pobierz plik" z menu kontekstowego tego monitu plik zaczał sie ściągać, tymczasem po kliknięciu nie dzieje sie nic i musze kolejny raz kliknąc na ten sam link do pliku zeby zaczął sie ściagać, to samo dzieje sie za kazdym razem gdy klika sie na inny link

czy da sie to jakos zmienic, ominąc z poziomu PHP (widze ze np. na
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: 22.08.2025 - 01:00