Foros del Web » Programando para Internet » PHP »

Problema en LOGIN

Estas en el tema de Problema en LOGIN en el foro de PHP en Foros del Web. Hola, Mi problema es que tengo varios usuarios registrados en my bbdd. Pero cuando hago Login, siempre me detecta como si el usuario y contraseña ...
  #1 (permalink)  
Antiguo 16/12/2008, 02:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Problema en LOGIN

Hola,

Mi problema es que tengo varios usuarios registrados en my bbdd. Pero cuando hago Login, siempre me detecta como si el usuario y contraseña no coinciden (a pesar de que si coinciden!!). Este es el cógigo:

<?php session_start();

if(isset($_GET['reg'])){
$reg=$_GET['reg'];
}else{
$reg="";
}
if($reg==1){
$msg1="<font color=\"#FF0000\"><b>Your details have been added, please login</b></font>";
}elseif($reg==2){
$msg1="<font color=\"#FF0000\"><b>You have been successfully logged out.</b></font>";
}

if(isset($_POST['submit'])){
if( empty($_POST['uname']) && (empty($_POST['upass']))){
header( "Location:Messages.php?msg=1" );
exit();
}
//transfer to shorter var
$n=$_POST['uname'];
$p=$_POST['upass'];

//connect to db
include('usuarios/prueba/config.php');
$query="select * from usuarios where usuario='$n' and password='$p'";
$result=mysql_query($query);

$num=mysql_num_rows($result);
if($num>0 ){

//put in session vars

$mytime=time();
$mytime=date("H:i:s A",$mytime);
$_SESSION['time'] = $mytime;
$_SESSION['status'] = 'logged';
$_SESSION['username'] = $n;
//goto next page
header("location:usuarios/prueba/welcome.php");
exit;
}else{
$_SESSION['status'] = 'not logged';

header( "Location:Messages.php?msg=2" );
exit();

}
}
?>

Gracias!!
  #2 (permalink)  
Antiguo 16/12/2008, 02:24
Avatar de Vashete  
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problema en LOGIN

La query no debería ser...

Código PHP:
$query="select * from usuarios where usuario='" .$n"' and password='" .$p"' "
Creo que es por eso, puesto que le estas pasando realmente que busque un usuario que se llame $n y que tenga la pass $p. No el valor de la variable sino el nombre de la misma. Seguramente si creas un usuario en la base de datos con el nombre "$n" y con pass "$p" te marque como logueado.

Por eso debes indicar en la sentencia que se trata de una variable.

Última edición por Vashete; 16/12/2008 a las 02:40
  #3 (permalink)  
Antiguo 16/12/2008, 02:31
 
Fecha de Ingreso: diciembre-2003
Ubicación: Salamanca
Mensajes: 123
Antigüedad: 20 años, 4 meses
Puntos: 3
Respuesta: Problema en LOGIN

Además creo que deberías comprobar primero el nombre y en consecuencia comprobar la clave y no hacerlo en el mismo query.
  #4 (permalink)  
Antiguo 16/12/2008, 03:40
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Problema en LOGIN

Como seria comprobar primero el nombre y despues la clave?

Muchas gracias por la ayuda!!
  #5 (permalink)  
Antiguo 16/12/2008, 05:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Problema en LOGIN

Que problema tiene comprobar el nombre y password al mismo tiempo?

Gracias!
  #6 (permalink)  
Antiguo 16/12/2008, 06:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: Problema en LOGIN

Si separas esa consulta en dos partes, en la primera seleccionas el id del usuario que corresponde con el nombre de login, y en la segunda buscas el password que corresponde al id que seleccionaste en la consulta anterior, entonces podés saber que si la primer consulta no te devuelve ningún resultado es porque el usuario no existe. Si te devuelve algún resultado entonces estás seguro que el usuario es válido y ahora te queda nomás comprobar si el password concuerda.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 17/12/2008, 02:08
 
Fecha de Ingreso: diciembre-2003
Ubicación: Salamanca
Mensajes: 123
Antigüedad: 20 años, 4 meses
Puntos: 3
Respuesta: Problema en LOGIN

Cita:
Que problema tiene comprobar el nombre y password al mismo tiempo?
Si compruebas los dos datos a la vez es muy sencillo acceder sin conocer la clave al poder delimitar la consulta sin que se cumpla la segunda condición:

Consulta(SELECCIONA * DE usuarios SI ususrio=usuario Y clave=clave)
Podemos cortar la consulta:
Consulta(SELECCIONA * DE usuarios SI ususrio=usuario'; Y clave=clave)
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 13:03.