Foros del Web » Programando para Internet » PHP »

Ayuda con Error Warning: Cannot modify header information - headers already sent by

Estas en el tema de Ayuda con Error Warning: Cannot modify header information - headers already sent by en el foro de PHP en Foros del Web. Hola empeze ah crear un sistema de login para una pagina que quiero hacer pero cuando me logeo me deberia de actualizar la pagina con ...
  #1 (permalink)  
Antiguo 07/12/2008, 20:15
 
Fecha de Ingreso: septiembre-2004
Ubicación: Chihuahua Mex
Mensajes: 404
Antigüedad: 19 años, 7 meses
Puntos: 2
Ayuda con Error Warning: Cannot modify header information - headers already sent by

Hola empeze ah crear un sistema de login para una pagina que quiero hacer pero cuando me logeo me deberia de actualizar la pagina con la funcion header Location pero me aparece el siguiente error Warning: Cannot modify header information - headers already sent by y no se porque es que aparece este es el codigo que utilizo

index.php
Código PHP:
<?php 
require_once './db/conexion.php';
require_once 
'./funciones/admin.php';
if (!isset(
$_SESSION['Logeado'])){
?>

<form action="<?php $_SERVER['PHP_SELF'];?>" method="post">
<p>Login: Usuario
<input name="user" type="text" size="10" />
Password
<input type="password" name="pass" size="10" />
<input type="submit" name="adminlogin" value="Login" />
</p>
</form>

<?php
} else {
$datos mysql_query("SELECT * FROM administradores WHERE id =  '".$_SESSION['Logeado']."'") or die (mysql_error());
      while(
$row mysql_fetch_object($datos)){
      
$nombre $row->usuario;    
echo 
"Hola $nombre ";
echo 
'<a href="logout.php">Cerrar Ssion</a>';
}
}
if (isset(
$_POST['adminlogin'])){
login($user$pass);
}
 
//Si el Login Falla
if (isset($MensajeError)) { 
        echo 
"<p><span class=\"warning\">$MensajeError</span></p>\n";
        }
        
?>
conexion.php
Código PHP:
<?php
session_start
();
 
// Propiedades de la Base de Datos
$dbhost 'xxxx';
$dbuser 'xxxxx'
$dbpass 'xxxx';    
$dbname 'xxxx';
 
// Nos Conectamos a la Base de datos
$conn mysql_connect ($dbhost$dbuser$dbpass) or die ("No puedo conectarme a la base de datos porque: " mysql_error());
mysql_select_db ($dbname) or die ("No puedo seleccionar la base de datos '$dbname' porque: " mysql_error());
?>
admin.php
Código PHP:
<?php
function login($user$pass){
   
//sacar los datos del formulario 
   
$user trim($_POST['user']);
   
$pass trim($_POST['pass']);
   
//quitamos tags de las variables   
   
$user strip_tags($user);
   
$pass strip_tags($pass);
   
// Sacar variables seguras para evitar inyecciones SQL
   
$user mysql_real_escape_string($user);
   
$pass mysql_real_escape_string($pass);
   
//Encriptamos el Password con MD5
   
$pass md5($pass);
    
// Revisamos si la convinacion del usuario y el password convinan en la base de datos
   
$sql "SELECT usuario FROM administradores WHERE usuario = '$user' AND password = '$pass'";
   
$result mysql_query($sql) or die('Query Fallo. ' mysql_error());
    
//Revisamos si hubo una convinacion
    
if (mysql_num_rows($result) == 1) {
      
// el usuario y password coincidieron iniciar la sesion
 
      //Obtenemos el id del usuario por la base de datos
      
$obtenerid mysql_query("SELECT * FROM administradores WHERE usuario = '$user'");
      while(
$row mysql_fetch_object($obtenerid)){
 
      
//Asignar el Id a el Valor
      
$id $row->id;      
 
      
//Creamos la Sesion
      
$_SESSION['Logeado'] = $id;
       
// recargar la pagina
     
header('Location: '.$_SERVER['HTTP_REFERER']);
      exit; 
      }
      } else {
   
//Sacar el error de la funcion
    
global  $MensajeError;
    
// Definir el Mensaje
    
$MensajeError '<p>Lo Sentimos, El Usuario y Password no coinciden</p>';
   }
}
?>
Ojala puedan ayudarme
  #2 (permalink)  
Antiguo 07/12/2008, 20:31
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Código PHP:
require_once ("../db/conexion.php");
require_once (
"../funciones/admin.php"); 
prueba con esto en vez de esto:
Código PHP:

require_once './db/conexion.php';
require_once 
'./funciones/admin.php'
es mejor que te fijes antes si es el codigo que que te fijes despues de haber cambiado la config.

saludos
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #3 (permalink)  
Antiguo 07/12/2008, 20:33
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

encontre esto:
"Ese error aparece cuando "imprimes" algo en pantalla antes de enviar un header.


Esto de "imprimir" se refiere a que:



1. Hay una línea en blanco
2. Hay un texto que salio con un echo
3. O hay un texto en html que se carga antes del header.


Siempre lo mejor es pensar que si es un header de redirección debe ir en una página totalmente en blanco porque si tiene algo antes arrojará error y lo que haya después del header no se verá.




En los casos es que hayan otro tipo de headers (De sesiones o cookies por ejemplo) corre la regla de que no debe haber nada antes o arrojará error.

"
fuente:http://www.desarrolloweb.com/faq/hea...ent-error.html
saludos
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #4 (permalink)  
Antiguo 07/12/2008, 20:37
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

No hay nada explícito en tu código que indique que hay una salida al navegador, pero de que la hay, la hay.

Hiciste algo que nos impide seguir ayudándote, mejor dicho, no lo hiciste. Y es publicar el mensaje de error que se te muestra completo. Justo obviaste la parte más importante del mensaje de error, que te indica el archivo que produjo la salida y la línea del código de ese archivo que lo hace. Verifica allí y nos comentas.

Saludos,
  #5 (permalink)  
Antiguo 07/12/2008, 20:38
 
Fecha de Ingreso: septiembre-2004
Ubicación: Chihuahua Mex
Mensajes: 404
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Gracias por la Ayuda exactamente este es el error

Warning: Cannot modify header information - headers already sent by (output started at /home/www/luisivan.freehostia.com/index.php:7) in /home/www/luisivan.freehostia.com/funciones/admin.php on line 31
  #6 (permalink)  
Antiguo 07/12/2008, 20:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

mmm....

y como siempre, nadie busca... en las FAQ's del foro !!!

¿Por qué me sale "Warning: Cannot modify header information - headers already sent by (output started at [1]:[2]) in [3] on line [4]"


NOTA:

include*/require*/echo no necesariamente usan paréntesis, por si las dudas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/12/2008, 20:42
 
Fecha de Ingreso: septiembre-2004
Ubicación: Chihuahua Mex
Mensajes: 404
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Cita:
Iniciado por pateketrueke Ver Mensaje

Hola revise el tema pero en mi codigo no tengo algun echo antes del header o del session_start();

Saludos
  #8 (permalink)  
Antiguo 07/12/2008, 20:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

salida no necesariamente es echo ... sino HTML también....

si lo puedes notar, tu función login() es la que usa el header ....

pero tu, en el index ... escribes HTML antes de hacer el login() ... y eso, genera un salida !!

(eso en la linea que indica el error, la 7 del index.php ... y se ejecuto en la 31 del admin.php)




¿¿sera por eso???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 07/12/2008, 20:57
 
Fecha de Ingreso: agosto-2008
Ubicación: Buenos Aires
Mensajes: 247
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

si el problema es lo ultimo que te mensionaron con la funcion header.... yo la estuve remplazando por:

Código PHP:
echo'<script language="JavaScript"> 
document.location.href="index.php" 
</script>'

eso hace lo mismo que header(), pero no tiene ese inconveniente de espacios en blanco o html.....


fijate si eso te ayuda.... por ahi te sirve para descartar posibilidades....

saludos...
  #10 (permalink)  
Antiguo 07/12/2008, 21:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Cita:
Iniciado por binagol Ver Mensaje
[...]

Código PHP:
echo'<script language="JavaScript"> 
document.location.href="index.php" 
</script>'

eso hace lo mismo que header(), pero no tiene ese inconveniente de espacios en blanco o html.....
[...]

y... ¿¿ si el usuario des habilita el Javascript ???

esta solución no es la ideal, lo adecuado es usar header de manera correcta!

el usar Javascript para re direccionar es una salida pronta (y poco profesional), y no resuelve el problema de raíz, solo lo oculta... de veras....

y por cierto, NO hace lo mismo que header() ... parece pero no es igual -> http://php.net/header


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/12/2008, 21:48
 
Fecha de Ingreso: septiembre-2004
Ubicación: Chihuahua Mex
Mensajes: 404
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Cita:
Iniciado por pateketrueke Ver Mensaje
y... ¿¿ si el usuario des habilita el Javascript ???

esta solución no es la ideal, lo adecuado es usar header de manera correcta!

el usar Javascript para re direccionar es una salida pronta (y poco profesional), y no resuelve el problema de raíz, solo lo oculta... de veras....

y por cierto, NO hace lo mismo que header() ... parece pero no es igual -> http://php.net/header


suerte!
Hola gracias por tu respuesta, que me recominedas hacer para poder hacer que redireccion y que no me salga el error
  #12 (permalink)  
Antiguo 07/12/2008, 21:55
 
Fecha de Ingreso: septiembre-2004
Ubicación: Chihuahua Mex
Mensajes: 404
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Ya funciono, simplemente movi esta parte if (isset($_POST['adminlogin'])){
login($user, $pass);
} antes del formulario

Saludos
  #13 (permalink)  
Antiguo 07/12/2008, 21:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con Error Warning: Cannot modify header information - headers alread

Edito: genial, lo resolviste!

(y yo que iba a decirte lo mismo)


PDTA: no olvides siempre consultar las FAQ's !!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 07/12/2008 a las 21:58 Razón: resuelto
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 07:50.