Przechowuj ten plik w miejscu nie dostępnym z zewnątrz przez serwer www.
Później przy pomocy php go wyślij.
Mam na myśli coś takiego:
- Użytkownik się loguje
- po zalogowaniu i kliknięciu jakiegoś linka otwiera mu się okienko z odnośnikiem do np.
pobierz.php, który wygląda mniejwięcej tak:
[php:1:294576049d]<?php
if($uzytkownik_zalogowany)
{
@set_time_limit(3600); // ustawiamy, ze skrypt może działać przez 3600 sekund (godzinę) *
header('Content-Disposition: attachment; filename="plik.zip"'); // mówim przeglądarce, że ma pobrać dane jako plik o nazwie 'plik.zip
$f = fopen("/home/plik.zip", "rb"); // otwieramy plik nie dostępny przez www, ale dostępny dla php w trubie tylko do odczytu [r] zabezpieczając się na wypadek plików binarnych (takich jak *.zip) [b]
fpassthue($f); // tu wyśle plik do użytkownika
exit; // kończymy działanie skryptu
}
?>[/php:1:294576049d]
Ten kod (bardziej rozwinięty) działa u mnie i się sprawdza... 8)
* - Skrypt powinien się móc wykonywać 2 * dłużej niż pobieranie pliku przy fatalnym transwerze.
W razie problemów i niejasności pisz...