Foros del Web » Programando para Internet » PHP »

Error header

Estas en el tema de Error header en el foro de PHP en Foros del Web. Saludos despues de crear un archivo plano quiero darle la opcion de desacrgar ese archivo al pc local y me sale el siguiente error: Warning: ...
  #1 (permalink)  
Antiguo 14/09/2005, 14:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 1 mes
Puntos: 2
Pregunta Error header

Saludos despues de crear un archivo plano quiero darle la opcion de desacrgar ese archivo al pc local y me sale el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\rips\Auditoria\ContProcUsuari o.php:5) in C:\Archivos de programa\Apache Group\Apache2\htdocs\rips\Auditoria\ContProcUsuari o.php on line 173

El codigo es el siguiente:

$arch = fopen($NombArch,"w");
$sep = "|";
$Encabezado = "Fecha". $sep . "Proceso" . $sep . "Cant" . "\r\n";
fwrite($arch,$Encabezado);
while($rowC = mssql_fetch_array($BusqC))
{
$linea = $rowC['fecha'] . $sep . $rowC['diagprincipal'] . $sep .
$rowC['cont'] . "\r\n";
fwrite($arch,$linea);
$Contador = $Contador + $rowC['cont'];
}
while($rowP = mssql_fetch_array($BusqP))
{
$linea = $rowP['fecha'] . $sep . $rowP['codproced'] . $sep .
$rowP['cont'] . "\r\n";
fwrite($arch,$linea);
$Contador = $Contador + $rowP['cont'];
}
$EncTotal = "Total:". $sep . $sep . $Contador;
fwrite($arch,$EncTotal);
fclose($arch);
header("location: descarga.php?filename=$NombArch");

Y este es el archivo Descarga.php

function Descargar($ElFichero){

$TheFile = basename($ElFichero);

header( "Content-Type: application/octet-stream");
header( "Content-Length: ".filesize($ElFichero));
header( "Content-Disposition: attachment; filename=".$TheFile."");
readfile($ElFichero);
}

$Archivo = $_GET['filename'];
Descargar($Archivo);

Que estoy haciendo mal????

Agradezco la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 14/09/2005, 15:04
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
quiere decir que ya has mandado contenido al browser.
cuando usar header debes asegurarte que no has enviado nada(tags html, echo... nada) antes de los header.

como solucion simple puedes poner al principio de tu script ob_start(), al final ob_end_flush(), con lo cual no tendras que ponerte a buscar quien esta imprimiendo algo antes.
  #3 (permalink)  
Antiguo 14/09/2005, 16:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 1 mes
Puntos: 2
Genial

Muchas gracias.

Me estaba sacando un ojo eso

Gracias por tu explicación y solución, ahora si me lo hace muy bien.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:14.