Foros del Web » Programando para Internet » PHP »

De nuevo este error: Cannot modify header information - headers already sent by

Estas en el tema de De nuevo este error: Cannot modify header information - headers already sent by en el foro de PHP en Foros del Web. Cannot modify header information - headers already sent by En mi servidor local, no me muestra este error y funciona todo correcto En un servidor ...
  #1 (permalink)  
Antiguo 17/01/2014, 09:07
 
Fecha de Ingreso: agosto-2010
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
De nuevo este error: Cannot modify header information - headers already sent by

Cannot modify header information - headers already sent by
En mi servidor local, no me muestra este error y funciona todo correcto
En un servidor gratuito si me muestra este error
En un servidor de paga no me muestra el error y funciona todo correcto

Alguno de los archivos php, no tienen HTML pero si mas de 2 header()

¿alguien sabe cual es la solución definitiva y segura? y por que en algunos servidores y host no da mayor problemas
  #2 (permalink)  
Antiguo 17/01/2014, 09:09
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: De nuevo este error: Cannot modify header information - headers already se

El header es lo primero que tienes que enviar, antes que cualquier espacio en blanco o HTML.
  #3 (permalink)  
Antiguo 17/01/2014, 09:43
 
Fecha de Ingreso: agosto-2010
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: De nuevo este error: Cannot modify header information - headers already se

este código me muestra el erro en un servidor gratuito


<?php
include '../conexion.php';
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");
/////////////////// INSERTAR MATERIAS ////////////
if(isset($_POST["apellidopaterno"])) {
$apellidopaterno = $_POST["apellidopaterno"];
$apellidomaterno = $_POST["apellidomaterno"];
$nombres = $_POST["nombres"];
$grado = $_POST["grado"];
$grupo = $_POST["grupo"];
$id = $_POST["id"];
// Hay campos en blanco
if($apellidopaterno==NULL|$apellidomaterno==NULL|$ nombres==NULL|$grado==NULL|$grupo==NULL) {
header("Location: ../foinsertaralumnos.php?error=1&id=$id");
}else{
// Comprobamos si ya existían
$checkmat = mysql_query("SELECT apellidopaterno, apellidomaterno, nombres, grado, grupo FROM alumnos WHERE apellidopaterno='$apellidopaterno' AND apellidomaterno='$apellidomaterno'AND nombres='$nombres'AND grado='$grado'AND grupo='$grupo' ");
$alumno_exist = mysql_num_rows($checkmat);
if ($alumno_exist>0) {
header("Location: ../foinsertaralumnos.php?error=2&id=$id");
}else{
//Todo parece correcto procedemos con la inserccion al temporal
$query = "INSERT INTO alumnos (apellidopaterno, apellidomaterno, nombres, grado, grupo) VALUES('$apellidopaterno','$apellidomaterno','$nom bres','$grado','$grupo')";
mysql_query($query) or die(mysql_error());
//header('Location: ../foinsertaralumnos.php?id="+id');//
header("Location: ../foinsertaralumnos.php?id=$id");
exit;
}
}
}
?>
  #4 (permalink)  
Antiguo 17/01/2014, 09:47
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: De nuevo este error: Cannot modify header information - headers already se

Haces demasiadas redirecciones... Debes añadir un exit(); después cada header, para que en el caso de que la condición se cumpla, redireccione y la ejecución del script termine.
  #5 (permalink)  
Antiguo 17/01/2014, 10:16
 
Fecha de Ingreso: agosto-2010
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: De nuevo este error: Cannot modify header information - headers already se

aun me sigue dando el mism error

<?php
include '../conexion.php';
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");
if(isset($_POST["apellidopaterno"])) {
$apellidopaterno = $_POST["apellidopaterno"];
$apellidomaterno = $_POST["apellidomaterno"];
$nombres = $_POST["nombres"];
$grado = $_POST["grado"];
$grupo = $_POST["grupo"];
$id = $_POST["id"];
if($apellidopaterno==NULL|$apellidomaterno==NULL|$ nombres==NULL|$grado==NULL|$grupo==NULL) {
header("Location: ../foinsertaralumnos.php?error=1&id=$id");
exit();
}else{
$checkmat = mysql_query("SELECT apellidopaterno, apellidomaterno, nombres, grado, grupo FROM alumnos WHERE apellidopaterno='$apellidopaterno' AND apellidomaterno='$apellidomaterno'AND nombres='$nombres'AND grado='$grado'AND grupo='$grupo' ");
$alumno_exist = mysql_num_rows($checkmat);
if($alumno_exist>0){
header("Location: ../foinsertaralumnos.php?error=2&id=$id");
exit();
}else{
//Todo parece correcto procedemos con la inserccion al temporal
$query = "INSERT INTO alumnos (apellidopaterno, apellidomaterno, nombres, grado, grupo) VALUES('$apellidopaterno','$apellidomaterno','$nom bres','$grado','$grupo')";
mysql_query($query) or die(mysql_error());
header("Location: ../foinsertaralumnos.php?id=$id");
exit();
exit;
}
}
}
?>
  #6 (permalink)  
Antiguo 17/01/2014, 18:51
Avatar de DrFaust  
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 12 años, 7 meses
Puntos: 87
Respuesta: De nuevo este error: Cannot modify header information - headers already se

Es posible que el servidor gratuito esté manipulando tu código antes de enviárselo al cliente. Probá con un script PHP que sólo envíe una cabecera, y fijate si te tira el mismo error.

En todo caso, siempre podés utilizar estas redirecciones (te recomiendo usar las 3; armate una función PHP que imprima todas):

Redirección por tag META:
<meta http-equiv="refresh" content="0;url=http://www.url.com">

Redirección por JavaScript:
<script type="text/javascript">window.location = "http://www.url.com";</script>

Redirección por vínculo (en el body, por si lo demás falla):
<a href="http://www.url.com">Click aquí para continuar</a>
__________________
Desarrollador web profesional
  #7 (permalink)  
Antiguo 17/01/2014, 19:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: De nuevo este error: Cannot modify header information - headers already se

A decir verdad el mensaje de error completo indica dónde se produce la salida, pero como omites dicha información es imposible adivinar lo que sucede en realidad.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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 21:03.