La cuestión es que tengo 1 lanzador de archivos que llevo usando cierto tiempo en el que solo ocultaba la url, recientemente he tenido que cerrar los archivos solo para los usuarios registrados y al añadirle un session_start(); al principio del script para autenticar el lanzador, en el navegador internet explorer si querias abrir el archivo en vez guardalo perdía la ruta..., y te daba error, no así en el firefox que funcionaba sin problemas, revisando el manual de php ví..., que ya había habido otros usuarios que habían tenido el mismo problema y lo habían solucionado añádieno una cabecera que refrescaba la cache..., lo que no me explico es porque es necesario esto solo en el explorer..., pego el code a ver si alguien me lo explica por favor.
ESTE CÓDIGO FUNCIONA SOLO EN EL FIREFOX
---------------------------------------------------------------------------
Código PHP:
<?
session_start();
include("../conexion.php");
if($_SESSION["autenticado"]=="acceso") {
$resultado = mysql_query("SELECT * FROM consentimientos WHERE ID='{$_GET['id']}'", $conexion);
while ($fila = mysql_fetch_array($resultado)){
$archivo=$fila["url"];
}
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=".basename($archivo));
readfile($archivo);
}else{
header("location:../ingresando.php");
}
?>
EN CAMBIO ESTOS DOS QUE SIGUEN FUNCIONAN EN EL FIREFOX Y EL EXPLORER
------------------------------------------------------------------------------------------------
Código PHP:
<?
session_start();
include("../conexion.php");
if($_SESSION["autenticado"]=="acceso") {
$resultado = mysql_query("SELECT * FROM consentimientos WHERE ID='{$_GET['id']}'", $conexion);
while ($fila = mysql_fetch_array($resultado)){
$archivo=$fila["url"];
}
header("Cache-Control: public, must-revalidate");
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=".basename($archivo));
readfile($archivo);
}else{
header("location:../ingresando.php");
}
?>
<?
session_start();
include("../conexion.php");
if($_SESSION["autenticado"]=="acceso") {
$resultado = mysql_query("SELECT * FROM consentimientos WHERE ID='{$_GET['id']}'", $conexion);
while ($fila = mysql_fetch_array($resultado)){
$archivo=$fila["url"];
}
header('Cache-Control: maxage=3600'); //Ajustar maxage=3600 apropiadamente
header('Pragma: public');
header("Content-Type: application/download\n");
header("Content-Disposition: attachment; filename=".basename($archivo));
readfile($archivo);
}else{
header("location:../ingresando.php");
}
?>