Tengo una carpeta llamada X que esta protegida con contraseña por medio de .htaccess y .htpasswd. Para descargar un archivo este tiene que ser solicitado por PHP de lo contrario a la persona que quiera descargar un archivo por url directo se le solicitara que ingrese el usuario y la contraseña asignados a la carpeta X.
Hasta aqui todo esta perfecto, el codigo que utilizo para la descarga es el siguiente:
Código PHP:
if (file_exists($fichero)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fichero));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fichero));
ob_clean();
flush();
readfile($fichero);
exit;
}
si pudiera hacer una redireccion de pagina, o una recarga de la pagina despues del codigo de descarga se solucionaria el problema, pero como el codigo de descarga PHP es por medio de header una vez leida la linea readfile($fichero); todo lo que venga a continuacion ya no es ejecutado por el navegador.
dejo dos codigos uno html y otro php, en el html va una imagen animada para que puedan, si es que hacen la prueba, ver el problema.
Código HTML:
Ver original
Código PHP:
<?php $fichero = "micarpeta/imagenanimada.gif";
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fichero));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fichero));
ob_clean();
flush();
readfile($fichero);
exit;