Foros del Web » Programando para Internet » PHP »

problema con headers al hacer log-in para php5

Estas en el tema de problema con headers al hacer log-in para php5 en el foro de PHP en Foros del Web. hola chicos... a ver si nos echais un cable, a ver si solucionamos este problema, es lo siguiente, estoy cambiando de server a uno con ...
  #1 (permalink)  
Antiguo 08/09/2007, 12:55
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
problema con headers al hacer log-in para php5

hola chicos...

a ver si nos echais un cable, a ver si solucionamos este problema, es lo siguiente, estoy cambiando de server a uno con php5, y resulta que ahora mi editor de noticias no funciona, porque no me deja hacer el log-in, yo inserto el login y el password y no va a ninguna parte... este es el código de mi archivo de comprobación:

Código:
<?
session_start();
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
echo $pass;
include("conexion.php");
$query="SELECT * FROM tb_usuarios WHERE login='$login'";
//mysql_select_db($database);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo "No existe el login introducido<br>";
echo "<a href='index.php'>REGRESAR</a>";
} else {
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){
/* Comprobamos que el password encriptado en la BD coincide con 
el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */
$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
$SESSION["apellidos"]=$array["apellidos"];
session_register("SESSION");
header("location:user.php");

} else {
echo "Password incorrecto!<br>";
echo "<a href='index.php'>REGRESAR</a>";
} /* Cerramos este ultimo else */
} /* Cerramos el else que corresponde a la comprobación de que el login existe */

?>
y me sale este error:

Warning: Cannot modify header information - headers already sent by (output started at /home/rebeca01/public_html/administracion/comprueba.php:8) in /home/rebeca01/public_html/administracion/comprueba.php on line 41

aparentemente mi problema está en el header("location:user.php"); ¿alguien sabe cómo se hace un header en php5? he buscado por ahi y no encuentro anda que me lo aclare...

muchas gracias!
  #2 (permalink)  
Antiguo 08/09/2007, 13:19
 
Fecha de Ingreso: julio-2005
Mensajes: 220
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

Cita:
Iniciado por Doom_Lady Ver Mensaje
Código:
<?
session_start();
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
echo $pass;
Date cuenta qu tienes puesto " echo $pass". Quitalo.

Salu2!!
  #3 (permalink)  
Antiguo 08/09/2007, 13:30
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

probé también si el pass y no funciona de todas maneras...

Código:
<?
session_start();
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
y en vez de error me sale que el password es incorrecto, he probado con los passwords de todos los usuarios que utilizamos el editor y no funciona con ninguno, sale incorrecto con todos...

por lo que el problema sigue residiendo en el header...
  #4 (permalink)  
Antiguo 08/09/2007, 23:21
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: problema con headers al hacer log-in para php5

Cita:
Warning: Cannot modify header information - headers already sent by (output started at /home/rebeca01/public_html/administracion/comprueba.php:8) in /home/rebeca01/public_html/administracion/comprueba.php on line 41

Dice que no se puede modificar la información de los encabezados porque ya se mandó output en la línea 8 de /administracion/comprueba.php. Fijate que tenés en esa línea y borralo para poder envíar el header.
  #5 (permalink)  
Antiguo 09/09/2007, 04:24
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

la linea 8 es un comentario:

Código:
//mysql_select_db($database);
así que eso no puede ser eso...

así que sigo exactamente donde estaba... ¿alguna idea mas?
  #6 (permalink)  
Antiguo 09/09/2007, 07:08
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: problema con headers al hacer log-in para php5

El error dice eso. Fijate si no cambió el error o si no cambiaste el código.
  #7 (permalink)  
Antiguo 09/09/2007, 09:23
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

tanto sin el

Código:
echo $pass;
como si el

Código:
//mysql_select_db($database);
en vez de error me sale que la contraseña es incorrecta, no tengo ni idea de lo que puede estar pasando...

he probado a crear un usuario directamente en la base de datos, para ver si me dejaba entrar, pero tampoco me deja...

Última edición por Doom_Lady; 09/09/2007 a las 09:42
  #8 (permalink)  
Antiguo 09/09/2007, 12:06
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

llevo toda la tarde dando vueltas al código, y ahora me ha salido este error, que es no es el que estaba antes:

Warning: Cannot modify header information - headers already sent by (output started at /home/rebeca01/public_html/administracion/comprueba.php:5) in /home/rebeca01/public_html/administracion/comprueba.php on line 22

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


está claro que es un problema de compatibilidad, que no funciona con php5... ahora el error me señala la linea del header("location:user.php")-22; y la del echo $pass; - 5

alguien sabe como puedo hacer eso que pone en el segundo warning? ó tendré que hablar con el hosting...

Thanks!
  #9 (permalink)  
Antiguo 09/09/2007, 17:54
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

Bueno, despues de quitar ese echo....

Pon ob_start() antes de sesion_start()

y despues del Location pon ob_flush()

saludos
  #10 (permalink)  
Antiguo 10/09/2007, 01:20
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

he probado con esto del ob_start() antes de session_start() y ob_flush() después de header location, eliminando el echo $pass

el código me ha quedado de la siguiente manera:

Código:
<? ob_start(); 
session_start();
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
include("conexion.php");
$query="SELECT * FROM tb_usuarios WHERE login='$login'";
//mysql_select_db($database);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo"No existe el login introducido<br>";
echo"<a href='index.php'>REGRESAR</a>";} 
else{
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla")){
/* Comprobamos que el password encriptado en la BD coincide con 
el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */
$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
$SESSION["apellidos"]=$array["apellidos"];
session_register("SESSION");
header("location:user.php");
ob_flush();}
else{
echo"Password incorrecto!<br>";
echo"<a href='index.php'>REGRESAR</a>";
} /* Cerramos este ultimo else */
} /* Cerramos el else que corresponde a la comprobación de que el login existe */
?>
ya no sale error de headers, pero sigue fallando, porque no va a user.php que es lo que debería hacer, se queda en index.php como si no enviase nada, ni el log-in ni el password ni nada... ¿alguna idea más? ya me estoy volviendo LOCA!

también me han dicho que pruebe con este otro código:

Código:
<? session_start();
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
echo $pass;
include("conexion.php");
$query="SELECT * FROM tb_usuarios WHERE login='$login'";
//mysql_select_db($database);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo"No existe el login introducido<br>";
echo"<a href='index.php'>REGRESAR</a>";}
else{
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla")){
/* Comprobamos que el password encriptado en la BD coincide con
el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */
$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
$SESSION["apellidos"]=$array["apellidos"];
session_register("SESSION");
//header("location:user.php");
// Redirección usando Javascript
echo '<script languaje="javascript"> window.location="user.php"; </script>';
}
else{
echo"Password incorrecto!<br>";
echo"<a href='index.php'>REGRESAR</a>";
} /* Cerramos este ultimo else */
} /* Cerramos el else que corresponde a la comprobación de que el login existe */
?>
y en vez de usar el header usar un redireccionamiento javascript, el caso es que me pasa exactamente lo mismo, he cambiado los headeres por redireccionamientos y lo mismo me da, se queda en el index.php como un mongo!!

Última edición por Doom_Lady; 10/09/2007 a las 01:33
  #11 (permalink)  
Antiguo 10/09/2007, 01:56
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Re: problema con headers al hacer log-in para php5

echo $pass;
deberia ir

echo '$pass'; o echo "$pass";

pero tendras problemas con los headers asi que ponlo en otra variable si es que no te pasa el valor
$pass2 = $pass;

y ocupas $pass2 y nos cuentas ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #12 (permalink)  
Antiguo 10/09/2007, 05:35
 
Fecha de Ingreso: junio-2007
Mensajes: 37
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

kaninox hasta las comillas para el echo "$pass"; llego...

de lo otro no entendí NADA! :-p aparte de que ya no sé en qué código quieres que lo incluya, si en el de los headers o en el de la redirección javascript...

te agradecería un montón si me lo explicas en lenguaje para tontos ó si me pegas el código con los cambios, es que yo creo que se me olvidó añadir que en esto llevo como mucho dos meses... y aunque cada día aprendo alguna cosita, no me entero mucho de lo que hago... doy palos de ciego y a veces sale, y otras no, como ahora...
  #13 (permalink)  
Antiguo 11/09/2007, 13:20
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Re: problema con headers al hacer log-in para php5

lo decia en esta linea

Código PHP:
<? session_start();
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
echo 
$pass;
al final en el echo $pass;
pues prueba con las comillas, pero como es un echo, tendras problemas con los headers asi que en ves de poner echo "$pass";
pongas el $pass en otra variable como $pass2
o sea sustituyas el echo "$pass"; por
$pass2 = $pass;

con esto guardas el password en otra variable y $pass2 la puedes ocupar mas adelante en el caso de que $pass no te este pasando los datos ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #14 (permalink)  
Antiguo 26/01/2008, 08:47
 
Fecha de Ingreso: enero-2008
Mensajes: 3
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: problema con headers al hacer log-in para php5

Bueno soy nuevo en esto, pero tenìa el mismo problema ahora que paso para php5 con el header, me salìa el mismo mensaje, lo que hice fue darme cuenta que tenìa lìneas vacìas entre los script, es decir algo asì

<?
?>
Línea vacia
<?
?>

Lo que he hecho es eliminar estas lìneas asi

<?
?>
<?
?>
o dejando todo en el mismo script y listo


Cita:
Iniciado por kaninox Ver Mensaje
lo decia en esta linea

Código PHP:
<? session_start();
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
echo 
$pass;
al final en el echo $pass;
pues prueba con las comillas, pero como es un echo, tendras problemas con los headers asi que en ves de poner echo "$pass";
pongas el $pass en otra variable como $pass2
o sea sustituyas el echo "$pass"; por
$pass2 = $pass;

con esto guardas el password en otra variable y $pass2 la puedes ocupar mas adelante en el caso de que $pass no te este pasando los datos ;)
  #15 (permalink)  
Antiguo 26/01/2008, 12:09
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Re: problema con headers al hacer log-in para php5

este error Warning: Cannot modify header information sale porque no se puede modificar las cabeceras y se debe a que una vez que haya una salida en pantalla, ya sea un echo, print o cualquier otra forma, el header no puede modificar el contenido del <head> para evitar ese error debes de quitar cualquier salida a pantalla antes del header(location:'') o de lo contrario utilizar el ob_start() y ob_end_flush() como dice gvargas.
Código PHP:
<?php
ob_start
();//al inicio de la página
//aquí todo tu codigo
ob_end_flush();//al final de la página
?>
explicacion:
el ob_start().- indica al servidor que la página en cuestion será almacenada en el buffer, y
el ob_end_flush().- le dice al servidor que libere el contenido del buffer, con esto te aseguras de que al estar la página en el buffer es posible modificar las cabeceras con el header.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #16 (permalink)  
Antiguo 18/01/2010, 16:44
Avatar de BlackSpiral  
Fecha de Ingreso: enero-2010
Ubicación: Tokyo
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Re: problema con headers al hacer log-in para php5

Cita:
Iniciado por eits Ver Mensaje
explicacion:
el ob_start().- indica al servidor que la página en cuestion será almacenada en el buffer, y
el ob_end_flush().- le dice al servidor que libere el contenido del buffer, con esto te aseguras de que al estar la página en el buffer es posible modificar las cabeceras con el header.

saludos.
Yeah eres dios XD te agradezco llevo tres horas buscando la solución y la que propones me funciono de maravilla

Gracias.

Por cierto a mi ese error solo me lo da en mi servidor local, el de la web funciona sin problemas.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:52.