Foros del Web » Programando para Internet » PHP »

error en el header

Estas en el tema de error en el header en el foro de PHP en Foros del Web. Hola Maestros tengo un problema con el header me manda el siguiente mensaje: Warning: Cannot modify header information - headers already sent by (output started ...
  #1 (permalink)  
Antiguo 02/04/2005, 22:22
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
error en el header

Hola Maestros

tengo un problema con el header me manda el siguiente mensaje:

Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\foro2\respuesta.php:6) in c:\wamp\www\foro2\respuesta.php on line 112


y la linea es la siguiente:

Código PHP:
110  $tema_id=$_POST['tema_id'];
111  mysql_query($nu_respuesta,$conn) or die(mysql_error());
112  header("Location: listatemas.php?tema_id=".$tema_id."");
113  exit(); 
cual es el problema?

alguien puede ayudarme?

gracias por todo.
  #2 (permalink)  
Antiguo 02/04/2005, 22:33
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 9 meses
Puntos: 7
bueno, normalmente los header siempre se deberian enviar al browser antes que nada...
Revisa enviar el header de primero, o sea antes que cualquier "echo", o codigo HTML ...
  #3 (permalink)  
Antiguo 02/04/2005, 23:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 19 años, 2 meses
Puntos: 3
o tambien prueba con esto

110 $tema_id=$_POST['tema_id'];
111 mysql_query($nu_respuesta,$conn) or die(mysql_error());

?> <---//con esto cierras el <?php

<SCRIPT LANGUAGE="javascript">
location.href = "listatemas.php?tema_id=".$tema_id.?>";
</SCRIPT>
<? <--/con esto vuelve a entrar al <?php
113 exit();
//recuerda cerrarlo de nuevo
?>
  #4 (permalink)  
Antiguo 02/04/2005, 23:20
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
si cierro el codigo php
  #5 (permalink)  
Antiguo 03/04/2005, 01:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Solo ratifico lo dicho por luchpe... he aquí una nota de php.net:
Cita:
Recuerde que la función header() debe ser llamada antes de que cualquier salida sea enviada, ya sea mediante etiquetas HTML normales, líneas en blanco de un archivo, o desde PHP. Es un error bastante común interpretar código extra con include(), require(), o alguna otra función de acceso de archivos, y terminar con espacios o líneas en blanco que son impresas antes de un llamado a header(). El mismo problema existe cuando se usa un archivo PHP/HTML único.
http://mx2.php.net/manual/es/function.header.php

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 03/04/2005, 12:42
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
aun no logro corregir el problema

no se que hacer
  #7 (permalink)  
Antiguo 03/04/2005, 12:54
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
este es el codigo completo

Código PHP:
<html>
<head>
<title>Envía tu respuesta</title>
</head>
<body>
<?php
include "config.php";
$conn mysql_connect($db_host$db_user$db_pass) or die(mysql_error());
mysql_select_db($db_name,$conn) or die(mysql_error());

if (
$_POST['op'] != "añadir respuesta") {
if (!
$_GET['respuesta_id']) {
header("Location: listatemas.php");
exit;
}

$verify "SELECT ft.tema_id, ft.tema_titulo"
"\n FROM respuesta_foro AS fp"
"\n LEFT JOIN temas_foro AS ft"
"\n ON fp.tema_id = ft.tema_id"
"\n WHERE fp.respuesta_id = ".$_GET['respuesta_id'].""
;
$verify_res mysql_query($verify$conn) or die(mysql_error());
if (
mysql_num_rows($verify_res) < 1) {

header("Location: listatemas.php");
exit;
} else {

$tema_id mysql_result($verify_res,0,'tema_id');
$tema_titulo stripslashes(mysql_result($verify_res0,'tema_titulo'));

?>
<table width="90%" border="0" cellspacing="2" cellpadding="2" bgcolor="#999999">
<tr bgcolor='CCCCCC'> 
<td> 
<div align="center">
<font face="Arial, Helvetica, sans-serif" size="5">
Envía tu respuesta a <?php echo $tema_titulo ?>
</font>
</div>
</td>
</tr>
<tr bgcolor="#FFFFFF"> 
<td>
<form method=post action="<?php echo $_SERVER['PHP_SELF'?>">
<table width="520" border="0" cellspacing="0" cellpadding="0" align="center">
<tr> 
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr> 
<td>
<font size="2" face="Arial, Helvetica, sans-serif">
<b>Tu correo electrónico:</b>
</font>
</td>
<td>
<input type="text" name="respuesta_creador" size="40" maxlength="150">
</td>
</tr>
<tr> 
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr> 
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Texto de respuesta:</b>
</font>
</td>
<td> 
<textarea name="respuesta_texto" rows="8" cols="40" wrap="virtual"></textarea>
<input type="hidden" name="op" value="añadir respuesta">
<input type="hidden" name="tema_id" value="<?php echo $tema_id ?>">
</td>
</tr>
<tr> 
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr> 
<td colspan="2"> 
<div align="center"> 
<input type="submit" name="submit" value="añadir respuesta">
</div>
</td>
</tr>
<tr> 
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
<?php
}
} else if (
$_POST['op'] == "añadir respuesta") {
if ((!
$_POST['tema_id']) || (!$_POST['respuesta_texto']) || (!$_POST['respuesta_creador'])) {
header("Location: listatemas.php");
exit();
}
$nu_respuesta "INSERT INTO respuesta_foro"
."\n VALUES ('', '".$_POST['tema_id']."', '".$_POST['respuesta_texto']."', now(), '".$_POST['respuesta_creador']."')"
;
mysql_query($nu_respuesta,$conn) or die(mysql_error());
header("Location: listatemas.php?tema_id=".$_POST['tema_id']."");
exit();
}
?>
  #8 (permalink)  
Antiguo 03/04/2005, 13:01
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 9 meses
Puntos: 7
te recomiendo cambiar la pocision del HTML ...
de esta manera...

Código PHP:
<?php
include "config.php";
$conn mysql_connect($db_host$db_user$db_pass) or die(mysql_error());
mysql_select_db($db_name,$conn) or die(mysql_error());
if (
$_POST['op'] != "añadir respuesta") {
if (!
$_GET['respuesta_id']) {
header("Location: listatemas.php");
exit;
}
$verify "SELECT ft.tema_id, ft.tema_titulo"
"\n FROM respuesta_foro AS fp"
"\n LEFT JOIN temas_foro AS ft"
"\n ON fp.tema_id = ft.tema_id"
"\n WHERE fp.respuesta_id = ".$_GET['respuesta_id'].""
;
$verify_res mysql_query($verify$conn) or die(mysql_error());
if (
mysql_num_rows($verify_res) < 1) {

header("Location: listatemas.php");
exit;
} else {

$tema_id mysql_result($verify_res,0,'tema_id');
$tema_titulo stripslashes(mysql_result($verify_res0,'tema_titulo'));
?> 
<html>
<head>
<title>Envía tu respuesta</title>
</head>
<body> 
<table width="90%" border="0" cellspacing="2" cellpadding="2" bgcolor="#999999">
<tr bgcolor='CCCCCC'>
<td>
<div align="center">
<font face="Arial, Helvetica, sans-serif" size="5">
Envía tu respuesta a <?php echo $tema_titulo ?>
</font>
</div>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>
<form method=post action="<?php echo $_SERVER['PHP_SELF'?>">
<table width="520" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<font size="2" face="Arial, Helvetica, sans-serif">
<b>Tu correo electrónico:</b>
</font>
</td>
<td>
<input type="text" name="respuesta_creador" size="40" maxlength="150">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Texto de respuesta:</b>
</font>
</td>
<td>
<textarea name="respuesta_texto" rows="8" cols="40" wrap="virtual"></textarea>
<input type="hidden" name="op" value="añadir respuesta">
<input type="hidden" name="tema_id" value="<?php echo $tema_id ?>">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="submit" name="submit" value="añadir respuesta">
</div>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html> 
<?php
}
} else if (
$_POST['op'] == "añadir respuesta") {
if ((!
$_POST['tema_id']) || (!$_POST['respuesta_texto']) || (!$_POST['respuesta_creador'])) {
header("Location: listatemas.php");
exit();
}
$nu_respuesta "INSERT INTO respuesta_foro"
."\n VALUES ('', '".$_POST['tema_id']."', '".$_POST['respuesta_texto']."', now(), '".$_POST['respuesta_creador']."')"
;
mysql_query($nu_respuesta,$conn) or die(mysql_error());
header("Location: listatemas.php?tema_id=".$_POST['tema_id']."");
exit();
}
?>
aunque de todas maneras sigues sacando codigo HTML antes de lanzar cualquier header... en ese caso deberias revisar la logica de tu script...
Chaop!
  #9 (permalink)  
Antiguo 03/04/2005, 13:04
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
gracias luchope ya salio asi como dijiste pero en que radiaca el cambio de posicion del html?

podrias explicarme?

gracias por todo.
  #10 (permalink)  
Antiguo 03/04/2005, 14:14
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 9 meses
Puntos: 7
como te habia dicho anteriormente los header (en español malhablado cabezeras...je je), son eso... cabezeras.. y por lo tanto se deberian enviar de primero al browser...primero es primero, antes que cualquier etiqueta, o salto de linea...

Chaop!
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.
Tema Cerrado




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