Foros del Web » Programando para Internet » PHP »

Problemas con header()

Estas en el tema de Problemas con header() en el foro de PHP en Foros del Web. Tengo un script de autentificación que dependiendo de si los datos del usuario están o no correctos los envía a determinada página, usando la función ...
  #1 (permalink)  
Antiguo 13/05/2010, 13:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 10 años, 10 meses
Puntos: 0
Problemas con header()

Tengo un script de autentificación que dependiendo de si los datos del usuario están o no correctos los envía a determinada página, usando la función header(). Pero me da el error:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\pruebas\ingreso.php:1) in C:\xampp\htdocs\pruebas\ingreso.php on line 38

Ya revisé en este foro y en otras páginas de Internet y recomiendan quitar cualquier línea de código, PHP o HTML, que genere salida. He revisado y no veo en mi script ningún tipo de salida.

Código PHP:
<?php    
    
{
        
$login $_POST['login'];
        
$pass $_POST['pass'];
    
        
//Conexión a MySQL y selección de la BD

        
$conexion mysql_connect('localhost''root''');

        
mysql_select_db('usuarios'$conexion);    

        
//Se escapan los carácteres problemáticos de los strings que se reciben por POST

        
$login mysql_real_escape_string($login);
        
$pass mysql_real_escape_string($pass);

        
/*Se consulta a la base de datos para verificar si existe el login o el email y si la contraseña es correcta*/

        
$query "SELECT * FROM usuarios WHERE (login='$login' OR email='$login') AND pass='$pass'";
        
$consulta mysql_query($query$conexion);

        if( 
$reg mysql_fetch_array($consulta) )
        {    
            
session_start();
            
$_SESSION["autentificado"] = TRUE;
            
$_SESSION["login"] = $reg['login'];
            
$_SESSION["nombre"] = $reg['nombre'];
            
header("Location: restringido.php");
            }
        else
        {
            
header("Location: home.php?errorUsuario=TRUE");
            }
        
?>
Incluso le agregué un condicional con la funcion headers_sent() atrapando el resultado en dos variables:

Código PHP:
<?php
if(headers_sent($archivo$linea))
{
echo 
"Archivo: $archivo <br />";
echo 
"Línea: $linea";
}
else
{
//acá incluí todo el código de arriba.
}
?>
El script modificado me genero este resultado:

Archivo: C:\xampp\htdocs\pruebas\ingreso.php
Línea: 1


Ya le he dado vueltas al asunto, borré cualquier salida, hasta la respuesta del manejo de errores "or die("problemas conectando con la BBDD")" que le había puesto a los llamados de funciones de MySQL pero no he podido solucionarlo. Espero que me puedan ayudar. Muchas gracias.
  #2 (permalink)  
Antiguo 13/05/2010, 13:24
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 12 años, 3 meses
Puntos: 48
Respuesta: Problemas con header()

Puedes pegar todo el contenido del fichero de una vez en lugar de hacerlo en dos partes?

Saludos!
  #3 (permalink)  
Antiguo 13/05/2010, 13:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas con header()

El contenido completo del archivo es el primero, el segundo es sólo una modificación que le hice al archivo original para tratar de ubicar donde estaba el problema.
  #4 (permalink)  
Antiguo 13/05/2010, 13:34
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 12 años, 3 meses
Puntos: 48
Respuesta: Problemas con header()

Cita:
Iniciado por pankas Ver Mensaje
El contenido completo del archivo es el primero, el segundo es sólo una modificación que le hice al archivo original para tratar de ubicar donde estaba el problema.
Pues entonces el problema lo tienes en la linea 2 ahí tienes una llave { la cual no debería estar.

Saludos!
  #5 (permalink)  
Antiguo 13/05/2010, 13:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas con header()

Joder, sí, le había puesto una llave allí por error, ya se la quité. Me arroja el mismo error del header() y además problemas con session_start(), pero por el mismo problema según lo que dice.

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\pruebas\ingreso.php:1) in C:\xampp\htdocs\pruebas\ingreso.php on line 23

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\pruebas\ingreso.php:1) in C:\xampp\htdocs\pruebas\ingreso.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\pruebas\ingreso.php:1) in C:\xampp\htdocs\pruebas\ingreso.php on line 27

Código PHP:
<?php
        $login 
$_POST['login'];
        
$pass $_POST['pass'];
    
        
//Conexión a MySQL y selección de la BD

        
$conexion mysql_connect('localhost''root''');

        
mysql_select_db('usuarios'$conexion);    

        
//Se escapan los carácteres problemáticos de los strings que se reciben por POST

        
$login mysql_real_escape_string($login);
        
$pass mysql_real_escape_string($pass);

        
/*Se consulta a la base de datos para verificar si existe el login o el email y si la contraseña es correcta*/

        
$query "SELECT * FROM usuarios WHERE (login='$login' OR email='$login') AND pass='$pass'";
        
$consulta mysql_query($query$conexion);

        if( 
$reg mysql_fetch_array($consulta) )
        {    
            
session_start();
            
$_SESSION["autentificado"] = TRUE;
            
$_SESSION["login"] = $reg['login'];
            
$_SESSION["nombre"] = $reg['nombre'];
            
header("Location: restringido.php");
            }
        else
        {
            
header("Location: home.php?errorUsuario=TRUE");
            }

        
?>
  #6 (permalink)  
Antiguo 13/05/2010, 13:56
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 12 años, 3 meses
Puntos: 48
Respuesta: Problemas con header()

Prueba a poner la función session_start(); en la segunda linea y quítala de donde está ahora.

Saludos!

Código PHP:
<?php
session_start
();

etc......
  #7 (permalink)  
Antiguo 13/05/2010, 14:53
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Problemas con header()

Tu problema consiste en que quiere hacer un header() cuando ya has escrito html y un header() tiene que ejecutarse antes de escribir html en el navegador, te recomiendo que lo que quieras hacer para ejecutar el header() lo mandes a un archivo nuevo para que se ejecute bien y no te mandara a ningun lado, siempre te mantendras en la misma pagina ya que el header se ejecutara y la respuesta sera en otro archivo pero siempre estaras en la misma pagina

Espero me entiendas :D
  #8 (permalink)  
Antiguo 05/06/2010, 18:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problemas con header()

Ya el problema está solucionado. El código estaba bien, la falla era con la codificación de caracteres. Estaba guardando mi archivo .php en UTF-8 y tenía que agregarle a php.ini la directiva default-charset= UTF-8 para que me funcionara correctamente.

Etiquetas: header
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 05:13.