Foros del Web » Programando para Internet » PHP »

error en php Warning: "Cannot modify header information - headers already sent by "

Estas en el tema de error en php Warning: "Cannot modify header information - headers already sent by " en el foro de PHP en Foros del Web. en la escuela nos pusieron a que corrigieramos un sistema de usuarios la mayor parte pude hacerlo solo que al iniciar sesion que te da ...
  #1 (permalink)  
Antiguo 28/12/2009, 00:47
 
Fecha de Ingreso: noviembre-2009
Mensajes: 35
Antigüedad: 14 años, 4 meses
Puntos: 0
Exclamación error en php Warning: "Cannot modify header information - headers already sent by "

en la escuela nos pusieron a que corrigieramos un sistema de usuarios la mayor parte pude hacerlo solo que al iniciar sesion que te da privilegios por niveles me pone este error
Código PHP:
WarningCannot modify header information headers already sent by (output started at C:AppServwwwquantumprocesaingresar.php:13in C:AppServwwwquantumprocesaingresar.php on line 16 
tengo este codigo para iniciar la sesion
ingresar.php
Código PHP:
<html>
<
body>
      <
table align="center">
           <
form name="ingresar" method="post" action="procesaIngresar.php" onSubmit="return validar();">
                 <
tr>
                     <
td align="center" colspan="2"><font color="orange"><h2>Identificate</h2></font></td>
                 </
tr>
                 <
tr>
                     <
td>Usuario:</td><td><input type='text' name='usuario' size=15></td>
                 </
tr>
                 <
tr>
                     <
td>Clave:</td><td><input type='password' name='password' size=15></td>
                 </
tr>
                 <
tr>
                     <
td align="center" colspan="2"><br><input type='submit' value='Ingresar'></td>
                 </
tr>
                 <
script language="javascript">
                         function 
validar(){
                                var 
usuario=document.ingresar.user.value;
                                var 
password=document.ingresar.pass.value;
                                if(
usuario==''){alert("Introduce el campo usuario");return false;}
                                if(
password==''){alert("Introduce el campo clave");return false;}
                                return 
true;
                         }
                 
</script>
            </form>
      </table>
</body>
</html> 
y el siguiente es el codigo que lo procesa
procesaingresar.php
Código PHP:
<?
session_start
();

  if (isset(
$_POST["usuario"]) && isset($_POST["password"])){

     include 
"conexion.php";

     
$sql="SELECT * FROM usuarios WHERE usuario='".$_POST["usuario"]."' AND password='".$_POST["password"]."'";
     
$resultado=mysql_query($sql,$conexion);

     if (
mysql_affected_rows()>0){
         
$registro=mysql_fetch_array($resultado);
         echo
"El usuario $registro[1] fue encontrado";
         
$_SESSION["nombre"]=$registro[1];
         
$_SESSION["nivel"]=$registro[4];
         
header("Location:/menu.php");
     }
     else{
          echo 
"<center><font color=orange><h2>No se puede ingresar, verifica el usuario y/o password</h2></font>
                <br><br><a href=ingresar.php>Inicio</a></center>"
;
                 }
  }
?>
pues esa es mi duda espero que me puedan ayudar
  #2 (permalink)  
Antiguo 28/12/2009, 03:30
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: error en php Warning: "Cannot modify header information - headers already

Ese error sale al enviar un echo, print, o simple codigo html ANTES de iniciar la session, cookies o un header()

Revisa si tienes algun espacio en blanco antes de la etiqueta <?php ya que puede ser esa tonteria, tambien debes revisar de no enviar nada de texto ANTES de las cabeceras.

Es un error tipico y muy hablado en este foro por el mismo problema siempre.

saludos
  #3 (permalink)  
Antiguo 28/12/2009, 07:32
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: error en php Warning: "Cannot modify header information - headers already

Usa <?php y no <?

Deberias tener el script puesto al pcipio de todo si esta embebido con html. Tambien fijate de tener guardado tu archivo con codificacion ANSI.

Revisa lo que te dijeron antes

NOTA: que tiene que ver esto con objetos??
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 28/12/2009, 08:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP orientado a objetos a PHP
  #5 (permalink)  
Antiguo 28/12/2009, 09:03
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: error en php Warning: "Cannot modify header information - headers already

el error te aparece por esto...... en este codigo:
Código PHP:
Ver original
  1.          $registro=mysql_fetch_array($resultado);
  2.          echo"El usuario $registro[1] fue encontrado";
  3.          $_SESSION["nombre"]=$registro[1];
  4.          $_SESSION["nivel"]=$registro[4];
  5.          header("Location:/menu.php");
  6.      }

estas haciendo un hecho antes de un header.. lo cual no se puede..... en una web donde hay header..... no pueden haber impresiones html antes de estos header.

tu solucion seria quitar ese echo, puesto que se redirecciona y ese mensaje no se vera, o si se llega a visualizar sera de 1 segundo...... me explico ??

o si deseas dejar el mensaje, deberias cambiar ese header para redireccionar y cambiarlo por:

1. este codigo que haria lo mismo pero de forma correcta, pero insisto en que no tiene logica debido a que no se vera el mensaje por la rredireccion.
Código PHP:
Ver original
  1.          $registro=mysql_fetch_array($resultado);
  2.          $_SESSION["nombre"]=$registro[1];
  3.          $_SESSION["nivel"]=$registro[4];
  4.          echo "El usuario $registro[1] fue encontrado";
  5.          echo "<script>document.location='menu.php'</script>";
  6.      }

2.
Código PHP:
Ver original
  1.          $registro=mysql_fetch_array($resultado);
  2.          $_SESSION["nombre"]=$registro[1];
  3.          $_SESSION["nivel"]=$registro[4];
  4.          echo "<center><font color='orange'><h2>El usuario $registro[1] fue encontrado.</h2></font><br><br><a href='menu.php'>Retornar al Menu</a></center>";
  5.      }

Bueno espero tengas soluciones.....

Gracias por el karma.....

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 28/12/2009, 09:06
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: error en php Warning: "Cannot modify header information - headers already

mysql_affected_rows() no necesita que se le pase ningun parametro??
__________________
HV Studio
Diseño y desarrollo web
  #7 (permalink)  
Antiguo 28/12/2009, 09:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: error en php Warning: "Cannot modify header information - headers already

no necesariamente, es opcional, pero mysql_affected_rows te muetra los registros afectados en relacion al ultimo query enviado a la bd....... como el mysql_insert_id().

podria cambiarlo por mysql_num_rows($resultado) ......... pero ese no es el problema sino el que comente hace un momento no ??

Feliz Navidad y Prospero Año Nuevo a todos.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 03/01/2010, 01:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 35
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: error en php Warning: "Cannot modify header information - headers already

gravcias me ayudo mucho
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 22:46.