Foros del Web » Programando para Internet » PHP »

Problema con header

Estas en el tema de Problema con header en el foro de PHP en Foros del Web. Buenas. Acabo de instalar el servidor apache ver. 2.0.54 y el PHP 4.4.0 en un Windows 2000 Server y he utilizado la función header para ...
  #1 (permalink)  
Antiguo 05/10/2005, 12:26
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 503
Antigüedad: 18 años, 10 meses
Puntos: 1
Pregunta Problema con header

Buenas. Acabo de instalar el servidor apache ver. 2.0.54 y el PHP 4.4.0 en un Windows 2000 Server y he utilizado la función header para cargar una página pero cuando carga la página el servidor me da el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at C:\Web\index.php:8) in C:\Web\index.php on line 67

La línea 67 es donde llamo al header.
¿Sabéis por que me da ese error?

Gracias y saludos.
  #2 (permalink)  
Antiguo 05/10/2005, 12:39
Avatar de davidangel  
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 18 años, 11 meses
Puntos: 0
bueno creo q eso es porq hay una entrada de html antes q el header
o quizas hay un espacio en blanco antes de iniciar <?

bueno sino solucionas pasa tu codigo

suerte nos vemos
__________________
Angel de Madrid
-------------------------------------------------
guarda tus favoritos http://markerbox.com (no requiere correo) :arriba:
  #3 (permalink)  
Antiguo 05/10/2005, 15:26
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 10 meses
Puntos: 0
Este problema ya se a presentado muuuuuuuuuuuuuuuuuuuuuuuuuuchaaaaasssss veces

Mira, los servidores se comunican con el navegador mediante un "lenguaje": HTTP (Protocolo de Transferencia de Hipertexto), el navegador le envia unas cabeceras HTTP al servidor para iniciar la comunicación y el servidor le regresa otras como respuesta más la página/archivo que el navegador solicito.

Cuando envias algo al navegador (hasta las lineas en blanco cuentan) las cabeceras se envian, lo que hace la función header(); de PHP es enviar cabeceras HTTP al navegador, si colocas una llamada a header(); (o sea, que envias cabeceras HTTP) después de que se envió algo al navegador, pues la llamada no va a jalar, porque las cabeceras ya se enviaron.

Eso es lo que te dice el error:
Cita:
Warning: Cannot modify header information - headers already sent
No se puede modificar la información de las cabeceras - Las cabeceras ya se eviaron.

Si me equivoque en algo al explicar, corrijanme
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #4 (permalink)  
Antiguo 06/10/2005, 01:06
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 503
Antigüedad: 18 años, 10 meses
Puntos: 1
El código que utilice es este:

<?
header("location:index.htm");
?>

y lo bueno que sin cambiar el código del archivo, con la misma configuración de apache y PHP, en Windows Xp SP2 me funciona bien. No se que ha pasado
  #5 (permalink)  
Antiguo 06/10/2005, 08:15
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 503
Antigüedad: 18 años, 10 meses
Puntos: 1
Echarme una mano por favor
  #6 (permalink)  
Antiguo 06/10/2005, 08:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
El mensaje de error te dice donde se está originando tu salida:
Cita:
(output started at C:\Web\index.php:8) in C:\Web\index.php on line 67
Ahí dice que la línea 8 de index.php tiene algo de HTML, algo de echo "algo" .. o un simple espacio o salto de línea antes de <?

Pon el código completo de "index.php" ..!

Un saludo,
  #7 (permalink)  
Antiguo 06/10/2005, 09:01
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 503
Antigüedad: 18 años, 10 meses
Puntos: 1
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>web</title>
</head>

<body>
<?
function interface_contador(){ 

    $archivo = "contador_mejorado.txt"; 
    $info = array(); 

    //comprobar si existe el archivo 
    if (file_exists($archivo)){ 
       // abrir archivo de texto y introducir los datos en el array $info 
       $fp = fopen($archivo,"r"); 
       $contador = fgets($fp, 26); 
       $info = explode(" ",$contador); 
       fclose($fp); 

       // poner nombre a cada dato 
       $mes_actual = date("m"); 
       $mes_ultimo = $info[0]; 
       $visitas_mes = $info[1]; 
       $visitas_totales = $info[2]; 
    }else{ 
       // inicializar valores 
       $mes_actual = date("m"); 
       $mes_ultimo = "0"; 
       $visitas_mes = 0; 
       $visitas_totales = 0; 
    } 

    // incrementar las visitas del mes según si estamos en el mismo 
    // mes o no que el de la ultima visita, o ponerlas a cero 
   if ($mes_actual==$mes_ultimo){ 
      $visitas_mes++; 
    }else{ 
       $visitas_mes=1; 
    } 
    $visitas_totales++; 

    // reconstruir el array con los nuevos valores 
    $info[0] = $mes_actual; 
    $info[1] = $visitas_mes; 
    $info[2] = $visitas_totales; 

    // grabar los valores en el archivo de nuevo 
    $info_nueva = implode(" ",$info); 
    $fp = fopen($archivo,"w+"); 
    fwrite($fp, $info_nueva, 26); 
    fclose($fp); 

    // devolver el array 
    return $info; 
}

//llamo a la función
$info = interface_contador();

//muestro los datos del contador
// echo "<b>mes:</b> ". $info[0] . "<br>";
// echo "<b>Visitas el último mes:</b>" . $info[1] . "<br>";
// echo "<b>Visitas totales:</b>" . $info[2] . "<br>";
header("location:index.htm");
?>


</body>
</html> 
  #8 (permalink)  
Antiguo 06/10/2005, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
alamarcheta

por qué metes esa función PHP entre "HTML" ? .. quita todo ese HTML .. no corresponde ahí y deja un exit; al final de header ("Location: index.html");

Te faltó también indicar el código que llama a esa función .. por qué ahí también influye donde lo llames (en "médio" de HTML o no ...).

También como veras .. no vemos los n° de línea .. intenta indentificar según lo que te comenté donde están esas líneas. (para la próxima).

Un saludo,
  #9 (permalink)  
Antiguo 07/10/2005, 23:37
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 10 meses
Puntos: 0
Ejem, ejem, que no leen o que??

Cita:
Iniciado por Yo:-D
Cuando envias algo al navegador (hasta las lineas en blanco cuentan) las cabeceras se envian, lo que hace la función header(); de PHP es enviar cabeceras HTTP al navegador, si colocas una llamada a header(); (o sea, que envias cabeceras HTTP) después de que se envió algo al navegador, pues la llamada no va a jalar, porque las cabeceras ya se enviaron.
Llamas a header(); después de código HTML, osea que la cabeceras ya fueron enviadas... y ya no puedes enviar más
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.

Última edición por DvD AdN; 07/10/2005 a las 23:44
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 20:25.