Foros del Web » Programando para Internet » PHP »

problema con headers en login script

Estas en el tema de problema con headers en login script en el foro de PHP en Foros del Web. Buenas Buenas! Gente, tengo un pequeño problema que por falta de experiencia no puedo solucionar (ademas de que nunca antes habia tenido este error). Se ...
  #1 (permalink)  
Antiguo 16/11/2009, 06:25
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
problema con headers en login script

Buenas Buenas!

Gente, tengo un pequeño problema que por falta de experiencia no puedo solucionar (ademas de que nunca antes habia tenido este error). Se de que se trata pero no encontre como solucionarlo.

Tengo un script de login, el cual estaba todo junto (Es decir, html+php) pero despues de que me dio el error de Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\cs2\asd\login.php:19) in C:\AppServ\www\cs2\asd\do_login.php on line 36 lo separe en dos partes.

por un lado puse el html (index.php):

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>sdasadsadsad</title>
</
head>
<
body>
<
form name="login" action="do_login.php" method="post">
usuario: <input type="text" name="usuario"  /><br />
pass: <input type="password" name="pass"  /><br />
<
input type="submit" value="enviar" name="enviar" />
</
form>
</
body>
</
html
y por otro lado el php (do_login.php)
Código PHP:
<?php 
$errors 
"";  

if(isset(
$_POST['enviar']))
{

if(
$_POST['usuario'] == NULL)
{
$errors .= "debes incluir un nombre de usuario";}


if(
$_POST['pass'] == NULL)
{
$errors .= "Debes introducir la password";}






echo 
"Ok enviar";


if(
$errors == ""){
$users=mysql_real_escape_string($_POST['usuario']);
$pass=mysql_real_escape_string($_POST['pass']);





require(
"coneccion.php");
$sql="SELECT * FROM users WHERE username='$users' AND password='$pass'";
$resultado=mysql_query($sql) or die(mysql_error());
$count=mysql_num_rows($resultado);

if(
$count==1){
session_register("user");
session_register("pass");
}
else {
echo 
"Error en usuario o password.";
}


}else{
echo 
$errors."<br />";
$errors "";}
}
?>
la cuestion es que me da ese error (Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\cs2\asd\do_login.php:19) in C:\AppServ\www\cs2\asd\do_login.php on line 36

Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\cs2\asd\do_login.php:19) in C:\AppServ\www\cs2\asd\do_login.php on line 36
).

y no se que puede hacer, probe cosas que encontre como borrar espacios en blanco al principio y final del codigo, separe el codigo en dos partes sin mezclar html+php.... nu che que pacha!

Nos vemos, un abrazo.
  #2 (permalink)  
Antiguo 16/11/2009, 06:30
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: problema con headers en login script

y las sesion_start, sesion_destroy???
__________________
~~[FiDeLio]~~
  #3 (permalink)  
Antiguo 16/11/2009, 08:20
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: problema con headers en login script

Cita:
Iniciado por .php Ver Mensaje
y las sesion_start, sesion_destroy???
Te digo, para que no te vuelvas loco, depues de fijarte lo que te dice .php, chequea que tengas guardados todos los archivos php con codificacion ANSI, te va a tirar ese error sino...
Cuando uses session_start(), no puede haber un echo antes de el, de hecho, no puede haber NADA antes de el, deberia ser:

<?php
session_start()
// todo lo demas

Suerte!
  #4 (permalink)  
Antiguo 18/11/2009, 05:21
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problema con headers en login script

Listo muchachos, en el apuro me falto poner los session_start();!

Ahora funciona a las mil maravillas! Muchas gracias!

Karmita para los dos!
  #5 (permalink)  
Antiguo 19/11/2009, 05:19
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problema con headers en login script

Chicos ahora ya que eso se soluciono, me surgio otro error, no se que puede ser, es asi, en la pagina que hago la verificacion del login quiero que despues de verificar, en la misma pagina haga un saludo, es decir, si se loguea correctamente, en esa misma pagina quiero ponerle "Bienvenido ['usuario'] bla bla bla" pero no me reconoce el usuario -.- y el login esta bien, osea encuentra ese user en la BD.

aca les dejo el do_login.php
Código PHP:
<?php
session_start
();
$errors "";  

if(isset(
$_POST['enviar']))
{

if(
$_POST['usuario'] == NULL)
{
$errors .= "debes incluir un nombre de usuario";}


if(
$_POST['pass'] == NULL)
{
$errors .= "Debes introducir la password";}
if(
$errors == ""){
$users=mysql_real_escape_string($_POST['usuario']);
$pass=mysql_real_escape_string($_POST['pass']);





require(
"coneccion.php");
$sql="SELECT * FROM users WHERE username='$users' AND password='$pass'";
$resultado=mysql_query($sql) or die(mysql_error());
$count=mysql_num_rows($resultado);

if(
$count==1){
$_SESSION['usuario']=$resultado['username'];
echo 
"hola ".$_SESSION['usuario'];
}
else
{
echo 
"Error en usuario o password.";
}


}else{
echo 
$errors."<br />";
$errors "";}
}


?>
no se que es, pero me ta volviendo loquito! jaja
  #6 (permalink)  
Antiguo 19/11/2009, 08:17
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: problema con headers en login script

Tenes una confusion.... La funcion mysql_query() te devuelve true o false, no te devuelve el valor que estas buscando...
Para eso deberias usar mysql_fetch_array() o mysql_fetch_row()
Una cosa asi:
Código PHP:
<?php
require("coneccion.php");
$sql="SELECT * FROM users WHERE username='$users' AND password='$pass'";
$resultado=mysql_query($sql) or die(mysql_error());
$count=mysql_num_rows($resultado);
if(
$count==1){
$registro=mysql_fetch_array($resultado);
$_SESSION['usuario']=$registro['username'];
echo 
"hola ".$_SESSION['usuario'];
}else{
//........
?>
Ah y disculpa que me meta: conexion se escribe con X
  #7 (permalink)  
Antiguo 19/11/2009, 08:51
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: problema con headers en login script

Creo que además no rescatas las variables que pasas por post y los estás usando mas abajo en la consulta.

Código PHP:
$users=$_POST['usuario'];
$pass=$_POST['pass']; 

Salu2
__________________
No hay mail que por internet no venga
  #8 (permalink)  
Antiguo 20/11/2009, 06:34
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problema con headers en login script

Cita:
Iniciado por jackson666 Ver Mensaje
Tenes una confusion.... La funcion mysql_query() te devuelve true o false, no te devuelve el valor que estas buscando...
Para eso deberias usar mysql_fetch_array() o mysql_fetch_row()
Una cosa asi:
Código PHP:
<?php
require("coneccion.php");
$sql="SELECT * FROM users WHERE username='$users' AND password='$pass'";
$resultado=mysql_query($sql) or die(mysql_error());
$count=mysql_num_rows($resultado);
if(
$count==1){
$registro=mysql_fetch_array($resultado);
$_SESSION['usuario']=$registro['username'];
echo 
"hola ".$_SESSION['usuario'];
}else{
//........
?>
Ah y disculpa que me meta: conexion se escribe con X
Jaja si lo de coneccion siempre siempre lo puse con doble C jaja

sobre el problema ya esta solucionado, me falto el fetch array! jaja que mal lo mio!
Muchas gracias, (No me dejo darte karma porque se ve que ya te habia dado antes!)

Cita:
Iniciado por cosmo_ Ver Mensaje
Creo que además no rescatas las variables que pasas por post y los estás usando mas abajo en la consulta.

Código PHP:
$users=$_POST['usuario'];
$pass=$_POST['pass']; 

Salu2
Si si, estoy recolectando las variables que paso desde el formulario. Igualmente muchas gracias! (Karmita para vos tmb por la onda!)
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 06:09.