Ciao a tutti, vi spiego il mio problema:
Ho due script, uno index.php e l'altro download.php. Il primo ha il compito di mettere inviare al secondo il link di un file, mentre il secondo si occupa di loggare alcune informazioni e scaricare il file con gli header.
Tutto funziona bene, tranne per il fatto che mentre il client sta scaricando il file, per lui è impossibile navigare in altre pagine dello stesso sito, perché si bloccano nel caricamento, senza restituire alcun errore. Non appena il download termina (perché è stato completato o perché è stato interrotto) le pagine tornano visibili.
Come mai?
Vi allego il mio download.php
Grazie mille per le eventuali risposte!codice:<?php session_start(); if(!isset($_SESSION['user_logged'])){ header("Location: login.php"); die(); } include("includes/config.inc.php"); include("includes/getip.inc.php"); $conn = db_connect($db_host,$db_user,$db_password,$db_name); $file = $_GET['file']; //il nome del file $ext = $_GET['ext']; //l'estensione del file $size = filesize($dir.$file); switch($ext) { case "exe": $ctype="application/octet-stream"; break; case "pdf": $ctype="application/pdf"; break; case "zip": $ctype="application/zip"; break; case "doc": $ctype="application/msword"; break; case "xls": $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 "jpe": case "jpeg": case "jpg": $ctype="image/jpg"; break; default: $ctype="application/force-download"; } //Loggo le informazioni $username = $_SESSION['username']; $ip = getIp(); $data = date("d/m/Y H:i:s"); $filename = $file; $query = "INSERT INTO ".$download_table." (username, ip, data, filename) VALUES ('$username', '$ip', '$data', '$filename')"; $result = mysql_query($query,$conn); if (!$result) { die('Invalid query: ' . mysql_error()); } //Faccio scaricare il file header("Pragma: public"); //header("Expires: 0"); header('Expires: '.gmdate('D, d M Y H:i:s').' GMT'); 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=".$file); //header("Content-Description: File Transfer"); //header("Accept-Ranges: bytes"); header("Content-Transfer-Encoding: binary"); header("Content-Length: $size"); set_time_limit(0); @readfile($abs_dir.$file) OR die("<html><body OnLoad=\"javascript: alert('No file found');history.back();\" bgcolor=\"#F0F0F0\"></body></html>");; exit; ?>


Rispondi quotando
