Foros del Web » Programando para Internet » PHP »

Cannot modify header information

Estas en el tema de Cannot modify header information en el foro de PHP en Foros del Web. Hola amigos, estoy haciendo una página con un formulario para un "update record" de una base de datos con Dreamweaver MX, el problema está en ...
  #1 (permalink)  
Antiguo 11/04/2007, 07:51
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Cannot modify header information

Hola amigos,
estoy haciendo una página con un formulario para un "update record" de una base de datos con Dreamweaver MX, el problema está en que cuando le doy a enviar no me redirige a la página deseada y me sale el siguiente error:

Warning: Cannot modify header information - headers already sent in /home/user/public_html/administrar/edita-noticias.php on line 49

al parecer se actualiza bien, pero me sale ese error en la cabecera ¿Sabéis si hay alguna manera de corregir esto?

esto es lo que hay en la linea 49 y un poco antes:

Código:
44  $updateGoTo = "www.dominio.com/administrar/confirma-cambios-noticias.html";
45  if (isset($_SERVER['QUERY_STRING'])) {
46  $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
47  $updateGoTo .= $_SERVER['QUERY_STRING'];
48 }
49  header(sprintf("Location: %s", $updateGoTo));
  #2 (permalink)  
Antiguo 11/04/2007, 08:16
 
Fecha de Ingreso: marzo-2007
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Re: Cannot modify header information

Comprueba que no haya reglones en blanco en tu código, y que no haya ninguna salida de codigo HTML antes del header(...
  #3 (permalink)  
Antiguo 11/04/2007, 08:41
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 16 años, 6 meses
Puntos: 3
Re: Cannot modify header information

Código PHP:
$updateGoTo "www.dominio.com/administrar/confirma-cambios-noticias.html";
if (isset(
$_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header("Location: "$updateGoTo); 
prueba asi a ver...
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #4 (permalink)  
Antiguo 11/04/2007, 13:54
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Cannot modify header information

He probado de las dos maneras y sigue el error.
  #5 (permalink)  
Antiguo 11/04/2007, 14:04
Avatar de radarcba  
Fecha de Ingreso: mayo-2005
Ubicación: ureleando
Mensajes: 505
Antigüedad: 14 años, 6 meses
Puntos: 3
Re: Cannot modify header information

Fijate que no estes haciendo un print o un echo antes de este codigo...
__________________
Maldición va a ser un día hermoso... PR
Tetris, correo & TU IP
  #6 (permalink)  
Antiguo 11/04/2007, 14:51
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Cannot modify header information

Pues no, debo decir que el código lo inserta automáticamente Dreamweaver
esto es lo que tengo:

Código:
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "inserta_noticias")) {
  $updateSQL = sprintf("UPDATE noticias SET fecha=%s, fuente=%s, titulo=%s, noticia=%s WHERE noticiaID=%s",
                       GetSQLValueString($_POST['fecha'], "date"),
                       GetSQLValueString($_POST['fuente'], "text"),
                       GetSQLValueString($_POST['titular'], "text"),
                       GetSQLValueString($_POST['noticia'], "text"),
                       GetSQLValueString($_POST['noticiaID'], "text"));

  mysql_select_db($database_ecom_noticias, $ecom_noticias);
  $Result1 = mysql_query($updateSQL, $ecom_noticias) or die(mysql_error());

  $updateGoTo = "www.dominio.com/administrar/confirma-cambios-noticias.html";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

$colname_edita_noticia = "-1";
if (isset($_GET['noticiaID'])) {
  $colname_edita_noticia = (get_magic_quotes_gpc()) ? $_GET['noticiaID'] : addslashes($_GET['noticiaID']);
}
mysql_select_db($database_ecom_noticias, $ecom_noticias);
$query_edita_noticia = sprintf("SELECT * FROM noticias WHERE noticiaID = %s", $colname_edita_noticia);
$edita_noticia = mysql_query($query_edita_noticia, $ecom_noticias) or die(mysql_error());
$row_edita_noticia = mysql_fetch_assoc($edita_noticia);
$totalRows_edita_noticia = mysql_num_rows($edita_noticia);
?>
  #7 (permalink)  
Antiguo 11/04/2007, 16:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: Cannot modify header information

En el error no te marca donde se empezo el output? Debe de decir algo de outputstarted at /path/script.php on line 29
  #8 (permalink)  
Antiguo 11/04/2007, 17:27
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Cannot modify header information

no, el error sólo dice:

Warning: Cannot modify header information - headers already sent in /home/user/public_html/administrar/edita-noticias.php on line 49
  #9 (permalink)  
Antiguo 11/04/2007, 20:15
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
Re: Cannot modify header information

mira donde esta el header pruba con esto
echo “<META HTTP-EQUIV=Refresh CONTENT=0;URL=direccion.php>”;

donde dice direccion va la pagina donde quieras que valla
  #10 (permalink)  
Antiguo 12/04/2007, 03:44
Avatar de Shevkorn  
Fecha de Ingreso: enero-2005
Ubicación: Trujillo
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 1
Re: Cannot modify header information

Hola, tienes dos posibilidades de resolver eso (en realidad tres, pero la primera ya te dijeron y supuestamente sigue saliendo el error... )
1. Verificar espacios en blanco y bla bla bla (ya está dicho)
2. Utilizar ob_start() y ob_end_flush() para no soltar ningun contenido hasta q se haya completado.
3. En lugar de usar header() y toda esa vaina.. xq no usas un script de javascript y te ahorras todo el dolor de cabeza
<script>
location.replace('lapaginaquequiero'); //puedes ponerle php tambien
</script>

Saludos y espero q te haya ayudado en alguito.
__________________
Taek said: ¿Aùn los pecadores podremos llegar al cielo?
  #11 (permalink)  
Antiguo 14/04/2007, 23:42
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Cannot modify header information

gracias por las respuestas chicos, lo cierto es que no se me ha solucionado, el problema está es que me tiene que redirigir una vez insertados y enviados los datos en el formulario.
  #12 (permalink)  
Antiguo 15/04/2007, 00:03
 
Fecha de Ingreso: septiembre-2006
Mensajes: 127
Antigüedad: 13 años, 2 meses
Puntos: 5
Re: Cannot modify header information

Yo siempre pongo ob_start(); en estos casos, suerte D:
  #13 (permalink)  
Antiguo 15/04/2007, 03:39
Avatar de ulisses  
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 73
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Cannot modify header information

¿dónde debería ponerlo? ¿al final del código?
  #14 (permalink)  
Antiguo 15/04/2007, 11:09
Avatar de Eiwazh  
Fecha de Ingreso: mayo-2005
Mensajes: 26
Antigüedad: 14 años, 6 meses
Puntos: 1
Re: Cannot modify header information

A mi me ha funcionado de lujo el javascript

me refiero

en mi caso

Código PHP:
<?php
// Valores por default de las variables
$nombre "";
$mail "";

if( isset( 
$_POST['submit'] ) )
{
   
// Creamos nombres de variables cortos
   
$nombre trim$_POST['nombre'] );
   
$mail trim$_POST['mail'] );
   
   
// validamos que se hayan enviado los campos nombre, edad y alguno de los 2 apellidos
   
if( (!empty($nombre) && !is_numeric($nombre)) && !empty($mail))
   {
    
?> 
      <script>
        location.replace('index2.php'); 
      </script>
      <?php
      
exit;
   }
   else
   {
      echo 
"<p>Por favor corrija los campos marcados con rojo.</p>";
      if( empty( 
$nombre ) || is_numeric$nombre ))
         
$nombre $nombre."\" style=\"background-color: #FF0000\"";
      if ( empty( 
$mail ))
         
$mail $mail."\" style=\"background-color: #FF0000\"";
   }
}

echo 
"<p>Los campos marcados con asterisco (*) son obligatorios y<br />";
echo 
"<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">";
echo 
"<table><tr><td>Mail:</td><td><input type=\"text\" name=\"mail\" value=\"$mail\"><strong> (*)</strong></td></tr>";
echo 
"<tr><td>Nombre:</td><td><input type=\"text\" name=\"nombre\" value=\"$nombre\"> <strong> (*)</strong></tr>";
echo 
"<tr><td align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Enviar\"></td></tr>";
echo 
"</table>";
echo 
"</p>";
?>
  #15 (permalink)  
Antiguo 01/08/2007, 15:28
Avatar de vITTY  
Fecha de Ingreso: enero-2006
Mensajes: 139
Antigüedad: 13 años, 10 meses
Puntos: 1
Re: Cannot modify header information

Vos tenes esto..


Código PHP:
$updateGoTo "www.dominio.com/administrar/confirma-cambios-noticias.html";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));

hace esto...

Código PHP:

$updateGoTo = "www.dominio.com/administrar/confirma-cambios-noticias.html";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
 
 } ?> <script>
        location.replace('www.dominio.com/administrar/confirma-cambios-noticias.html'); 
      </script> 

<?php }

Prácticamente hay código del updateGoto que es innecesario pero lo agrego para que te orientes.


Saludos!

Última edición por vITTY; 01/08/2007 a las 15: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.
Tema Cerrado




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