Foros del Web » Programando para Internet » PHP »

¿Porque me da este error?

Estas en el tema de ¿Porque me da este error? en el foro de PHP en Foros del Web. Hola estoy intentado redirigir a un archivo cuando un usuario no este autentificado y no se porque me da error, a continuación pego el código: ...
  #1 (permalink)  
Antiguo 29/04/2003, 18:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
¿Porque me da este error?

Hola estoy intentado redirigir a un archivo cuando un usuario no este autentificado y no se porque me da error, a continuación pego el código:

<?
include ("conexion.php");
include ("login.php");
if($loginCorrecto)
{
echo "";
}
else
{
header("Location:error.php");
exit;
}
?>
<html>
<head>
<title>xxxxxxxx</title>
</head>
<body>
xxxxxxxxxxxxx
</body>
</html>

El error que me devuelve es el siguiente:

Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\autentificacion\login.php:32) in c:\apache\htdocs\autentificacion\asociados.php on line 10


Gracias desde ya, un saludo.
  #2 (permalink)  
Antiguo 29/04/2003, 18:40
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 15 años
Puntos: 0
creo que estas usando el sistema de miscodigos no?
pues yo lo solucine con un javascript
Código PHP:
<SCRIPT LANGUAGE="javascript"
location.href "error.php"
</SCRIPT> 
__________________

la vida es bella cuando no es culera
  #3 (permalink)  
Antiguo 29/04/2003, 19:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias por la idea... pero me parece poco segura ya que si tiene desactivado los java se saltará la autentificación casi sin querer...

Un saludo.
  #4 (permalink)  
Antiguo 29/04/2003, 20:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Antes de hacer una llamada a header() .. NO puede existir nada de HTML antes de la llamada a esa función ..

En realidad no es solo HTML sino cualquier cosa enviada al navegador .. Esas "cosas" son por ejemplo un simple espacio antes de <? (incluido los que tengas en esos conexion.php y login.php que llamas con tu include() ...). También es consideredo "cabeceras" enviadas un salto de linea en alguno de tus include() o en ese própio scirpt ..

Si te fijas en el error que te dá PHP .. veras que dice:
Cita:
output started at c:\apache\htdocs\autentificacion\login.php:32) in
Así que mira en tu login.php linea 32 que ahí tienes algun echo .. print .. printf o simple HTML o algun espacio o salto de línea antes o despues de <? ?>

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 29/04/2003, 20:54
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 15 años
Puntos: 0
Te da un error porque antes de llamar a la función header (linea 10 en asociados.php), el script login.php ya ha impreso algo (en su linea 32).

Mira a ver que pone en la linea 32 de login.php e igual puedes solucionarlo.
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #6 (permalink)  
Antiguo 30/04/2003, 10:20
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias Cluster y Argintxe ya lo solucionao.


Un saludo.
  #7 (permalink)  
Antiguo 30/04/2003, 10:55
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola , cluster creo que estas equivocado antes de una cabecera header() puede haber HTML, lo que no puede haber es un echo, un print, etc. Corrigeme si me equivoco.
Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #8 (permalink)  
Antiguo 30/04/2003, 11:09
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
No puede haber html antes del header.

La situación real es que no puede enviarse nada al navegador y despues tratar de agregar los headers, ya que en ese primer envio es donde se mandan los encabezados. Por ejemplo, lo siguiente es incorrecto:

Código PHP:
<html>
<head>
<?
if (bla bla) {
   
header("Location:error.php");
}
?>
Un error comun es dejar alguna linea en blanco antes de comenzar con el script, ya que PHP interpreta ese salto de linea como contenido html que debe enviarse al navegador, y al tratar de agregar headers, sale un error...

Tal vez lo que tu dices es que puede "guardarse" html sin que este sea enviado, como esto:

Código PHP:
<?
$inicio
="<html>";
$inicio.="<head>";
if (
bla bla) {
   
header("Location:error.php");
} else {
echo 
$inicio;
}

Saludos!
__________________
Manoloweb
  #9 (permalink)  
Antiguo 30/04/2003, 11:52
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola, gracias por la respuesta, ¿pero? y querys se pueden hacer consultas a la BD y enviar cookies, y crear sesiones ¿no?. Corrigeme si me vuelvo a equivocar.
Saludos
PD: en esta creo que tengo razón.
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #10 (permalink)  
Antiguo 30/04/2003, 12:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues cookies no te lo puedo confirmar (creo que sí .. es mas pruebalo tu mismo y decide) ..

En general puedes usar cualquier código PHP que quieras que NO generere salida al naveador .. Así que peudes hacer "query's" y lo que quieras ..

Por ejemplo .. si alguna de esas "query's" o código en general que uses genera un error .. PHP envia el mensaje de error al navegador como una cadena de texto en HTML ..(a no ser que se le diga a PHP que no lo haga). Asi que veras el error de esa instrucción o código + el error de que las cabeceras no se han podido enviar bla bla bla (que lo proboca header() ..)

Por otro lado .. Cuando se dice "no puede existir nada de HTML por delante de header()" se refiere a que "Se envie" ese HTML al navegador antes de header(). Como ya te explicó Manoloweb .. puedes tener funciones con HTML o condicionales con HTML .. pero siempre que no se cumpla ese condicional o se llame a esa función que generee ese HTML o bien HTML incrustado en PHP directamente ANTES de header() no tendrás problemas ..

También te recuerdo que tienes las funciones de control del buffer de salida de PHP .. funciones como ob_start(), ob_end(), flush() que sirven para "capturar" la salida que vá genenrando PHP del HTML/javascritp/etc que entrega al servidor para "entregarlo" (con ob_end() o flush() por ejemplo) cuando lo necesites .. Con esa técnica es posible "enviar" (ojo que lo pongo entre comillas) HTML al navegador antes de un header() .. Esto es posible a que PHP se lo "guarda" en su buffer según va generandolo ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 30/04/2003, 12:55
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Si con cookies, "query's" y sesiones funciona.
Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
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 11:31.