Witam, zacząłem ostatnio troche pisać w PHP. Napisałem skrypt pobierający plik z serwera. Plik pobiera się jednak w większości formatów tak że nie można go uruchomić (jest uszkodzony), a przy plikach *.txt zawartość pliku zostaje zastąpiona kodem html strony ;/ Nie mam pojęcia co jest grane. I jeszcze jedno… czy jest jakaś łatwiejsza metoda wywołania tego okienka pobierania i ewentualnie jak się ją stosuje.
Skrypt pobierający:
<?php
ob_start();
include('gora.php');
echo'
Download’; session_name(‘sesja’); ini_set(‘session.use_trans_sid’, 1); //przechowuj SID zawsze w adresie ini_set(‘session.use_cookies’, 0); //nie używaj cookies session_start(); require_once(‘polaczenie.php’); $zapytanie=“SELECT nazwa, rozmiar, typ FROM pliki WHERE id=’{$_GET[‘id’]}’”; $wynik=@mysql_query($zapytanie); $tabela=mysql_fetch_array($wynik); //okreslenie nazwy pliku $roz=explode(’.’, $tabela[‘nazwa’]); $nazwa=‘pliki/’.$_GET[‘id’].’.’.$roz[1]; if(file_exists($nazwa)){ $typ=$tabela[‘typ’]; $nm=$tabela[‘nazwa’]; $roz=$tabela[‘rozmiar’]; //pobierz plik header(“Content-Type: application/$typ”); header(“Content-disposition: attachment; filename=$nm”); header(“Content-Length: $roz”); readfile($nazwa); } else { echo’Taki plik nie istnieje’; } echo’’; include(‘dol.php’); ob_end_flush(); ?>[/code]
hm…tak naprawde ten przykład jest w wikszości wzięty z książki…czyżby w książce był taki błąd?? Przecież buforowałem wyjście wiec nie ma problemu z header()
Przepraszam, nie zauważyłem tego buforu w skrypcie, a właściwie to zauważyłem, ale nieprzeanalizowałem jego wpływu.
Przy jakich formatach występują błędy? Może problem leży w złym mime type header(“Content-Type: application/$typ”); może to co wysyłasz wcale nie jest application/