Skrypt download_file prośba o pdopowiedź

0

Witam.
Skrypt powoduje pobranie pliku o danym ID.

<?php session_start();
include ('config.php'); 				// plik z konfiguracją strony 
include('core.php');					// plik z funkcjami
$id = check_input($_GET['idf']);


$sql = mysql_query("SELECT * FROM `gu_files` WHERE `id_file` = '$id'");
while ($rek = mysql_fetch_array($sql)) {
	$id_file = $rek['id_file'];
	$id_user = $rek['id_user'];
	$nazwa_pliku = $rek['nazwa_pliku'];
	$rozszerzenie = $rek['rozszerzenie'];
	$hash = $rek['hash'];
	$size = round($rek['size'] / 1024,1) . ' KB';
}

	$filename = $hash . '.' . $rozszerzenie;
	$dir = "files/$id_user/";
	 
	if(ini_get('zlib.output_compression')){ ini_set('zlib.output_compression', 'Off'); }
	 
	$file_extension = strtolower(substr(strrchr($filename,"."),1));
	 
	if( $filename == ""){
		echo "<html><title>Document Downloads</title><body>Error: No such file to download.</body></html>";
		exit;
	} 
	
	$path = $dir.$filename;
	 
	switch( $rozszerzenie ){
		case "pdf": $ctype="application/pdf"; break;
		case "exe": $ctype="application/octet-stream"; break;
		case "zip": $ctype="application/zip"; break;
		case "doc": $ctype="application/msword"; break;
		case "docx": $ctype="application/msword"; break;
		case "xls": $ctype="application/vnd.ms-excel"; break;
		case "xlsx": $ctype="application/vnd.ms-excel"; break;
		case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
		case "gif": $ctype="image/gif"; break;
		case "png": $ctype="image/png"; break;
		case "jpeg":
		case "jpg": $ctype="image/jpg"; break;
		default: $ctype="application/force-download";
	}
	
	
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: private",false);
	header("Content-Type: ".$ctype);
	header("Content-Disposition: attachment; filename=\"".basename($nazwa_pliku.".".$rozszerzenie)."\";" );
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: ".filesize($dir.$filename));
	//readfile($dir.$filename);
	//readfile($path);
	header('X-Sendfile: '.$path);
	
	exit();

?>

Problem polega na tym, że byle jaki plik pobiorę to jest on jakby uszkodzony.
Txt jest puste, a zip piszę ma niewłaściwy format lub jest uszkodzone.
Co może być przyczyną, że pobrane pliki się uszkadzają?

0

Brak obsługi X-Sendfile.

Identyczny chyba kod już ktoś wklejał.

Przykłady najprostszego pobierania plików podawałem tutaj:
Skrypt download.php nie działa. Proszę o pomoc.
Chrome blokuje moją instalke przy pobieraniu
sprawdzenie pobrania pliku

Uwaga! Większość ludzi z tym problemem korzysta z jakiejś bazy MIME-TYPE (jakby nie istniało mime_content_type), ale używając tego nie wymusisz na przeglądarce pobierania pliku, np. pliki pdf będą wyświetlone u tych z aktywną wtyczką Adobe, a większość ludzi paradoksalnie to własnie chce obejść pisząc takie download.php (tutaj z kolei lepsza by była zamiana MIME-TYPE przez .htaccess [lub odpowiedniki] w folderze, gdzie trzyma się pliki do pobrania - nic nie trzeba pisać, nie "zużywasz" interpretera php, masz od razu obsługę wznawiania (Twój skrypt tego nie potrafi)).

1 użytkowników online, w tym zalogowanych: 0, gości: 1