Foros del Web » Programando para Internet » PHP »

problema con login a la BD

Estas en el tema de problema con login a la BD en el foro de PHP en Foros del Web. Hola gente que hay. tengo un problemilla y es que no puedo hacer la consulta a MYSQL para hacer login le explico. desde PHP tengo ...
  #1 (permalink)  
Antiguo 28/01/2008, 07:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 14 años, 10 meses
Puntos: 3
problema con login a la BD

Hola gente que hay. tengo un problemilla y es que no puedo hacer la consulta a MYSQL para hacer login le explico.

desde PHP tengo un formulario de inscripcion de usuarios la conexion y los datos se ingresan perfectamente a la base de datos MYSQL.

Ahora cuando voy a hacer login me dice que el password es incorrecto y estoy tipiando el mismo, a la base de dato le llega la pass encriptada con el md5() , no se si el problema viene de ahi le paso el codigo para ver que opinan

saludos.


$conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die ("Imposible conectar con la base de datos");
// Selecciono la BBDD
mysql_select_db($nombreBD,$conectar) or die (mysql_error());

include('identificar.inc.php');

//Inicializamos la variable sid para utilizarla más tarde
$sid = md5(SID);

function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","&#92",$mensaje);
return $mensaje;
}

if(trim($_POST["nick"]) != "" && trim($_POST["password"]) != "")
{
$nickN = quitar($_POST["nick"]);
$passN = quitar($_POST["password"]);

$result = mysql_query("SELECT id, password FROM usuarios WHERE nick='$nickN'");
if($row = mysql_fetch_array($result))
{

if($row["password"] == md5($passN))
{
//Introduce en la BD los datos encriptados de IP,Host,y navegador
$identificador = md5(get_full_ip() .'-'. browser_detection());
$sql = "Update usuarios Set sid = '".$sid."', identificador = '".$identificador."',
ultima_visita = NOW() Where id = '".$row['id']."'";
mysql_query($sql) or die (mysql_error());

//90 dias dura la cookie
// setcookie("usNick",$nickN,time()+7776000);
// setcookie("usPass",$sid,time()+7776000);

setcookie("usNick",$nickN,time()+7776000,"/","localhost");
setcookie("usPass",$passN,time()+7776000,"/","localhost");

//También las de sesión
$_SESSION['usNick'] = $nickN;
$_SESSION['usPass'] = $sid;
$_SESSION['id'] = $row['id'];
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php?<? echo SID ?>";
</SCRIPT>
<?
}
else
{
echo 'Password incorrecto
<br>
<a href="formulario_login.php?">Login</a>
';
}
}
else
{
echo 'Usuario no existente en la base de datos
<br>
<a href="formulario_login.php?'. SID .'">Login</a>
';
}
mysql_free_result($result);
}
else
{
echo 'Debe especificar un nick y password
<br>
<a href="formulario_login.php?">Login</a> ';
}
mysql_close();
?>
  #2 (permalink)  
Antiguo 28/01/2008, 08:56
Avatar de BrujoNic
Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.903
Antigüedad: 18 años
Puntos: 632
Re: problema con login a la BD

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 28/01/2008, 09:51
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 12 años
Puntos: 3
Re: problema con login a la BD

No se pero donde estas declarando $row?? la estas comparando con el resultado de tu SQL y no se que valor tiene o donde la declaras..

Ahora si lo que quieres es comprobar si existe o no el usuario compara.. has esto

if (mysql_fetch_array($result)>0)

osea si existe.. me imagino que ya validates para que no se repita.. entonces siempre te debera regresar 1 aun asi por cualquier cosa puedes colocarle

if (mysql_fetch_array($result) == 1)

Espero te sirva..
salu2..!!
__________________
Somos lo que nosotros queremos ni mas ni menos..
No hay dia mas perdido que aquel en que no hemos reido..
La vida es tal y como debe ser...
Nadie vivira por ti...
  #4 (permalink)  
Antiguo 28/01/2008, 12:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 14 años, 10 meses
Puntos: 3
Re: problema con login a la BD

Cita:
Iniciado por BrujoNic Ver Mensaje
Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
a ok disculpa pense que iria alli .
  #5 (permalink)  
Antiguo 28/01/2008, 12:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 14 años, 10 meses
Puntos: 3
Re: problema con login a la BD

Cita:
Iniciado por agressor Ver Mensaje
No se pero donde estas declarando $row?? la estas comparando con el resultado de tu SQL y no se que valor tiene o donde la declaras..

Ahora si lo que quieres es comprobar si existe o no el usuario compara.. has esto

if (mysql_fetch_array($result)>0)

osea si existe.. me imagino que ya validates para que no se repita.. entonces siempre te debera regresar 1 aun asi por cualquier cosa puedes colocarle

if (mysql_fetch_array($result) == 1)

Espero te sirva..
salu2..!!

me acabod e fijar que con tu ejemplo coloque
if (mysql_fetch_array($result)==1)
{
echo 'si existe';
}
else
{
echo 'no existe';
}

y me va por el else de que no existe ya me fijate bien bien a ver que pasa
  #6 (permalink)  
Antiguo 28/01/2008, 12:29
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 12 años, 7 meses
Puntos: 6
Re: problema con login a la BD

Hola, conviertes tambien el password que capturas en la caja de texto con MD5, ya ke si en tu bd tienes el password encriptado, tambien necesitas encriptar el password ke pides para ke puedes compararlo.

salu2
__________________
"Eres grande por que caminas entre gigantes"
  #7 (permalink)  
Antiguo 28/01/2008, 14:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 14 años, 10 meses
Puntos: 3
Re: problema con login a la BD

Cita:
Iniciado por ferbux Ver Mensaje
Hola, conviertes tambien el password que capturas en la caja de texto con MD5, ya ke si en tu bd tienes el password encriptado, tambien necesitas encriptar el password ke pides para ke puedes compararlo.

salu2
si hay es donde tengo el problema , haciendo la consulta solo por nombre me funciona bien, pero cuando va a comparar la pass me da el error que la password es incorrecta

en la BD esta encriptada la password como la encripto para hacer la comparacion

no se si esto estara bien cuando hago la pregunta

if($row["password"] == md5($passN))
{

//90 dias dura la cookie
// setcookie("usNick",$nickN,time()+7776000,"/");
// setcookie("usPass",$sid,time()+7776000,"/");

setcookie("usNick",$nickN,time()+7776000,"/","localhost");
setcookie("usPass",$passN,time()+7776000,"/","localhost");

//También las de sesión
$_SESSION['usNick'] = $nickN;
$_SESSION['usPass'] = $sid;
$_SESSION['id'] = $row['id'];
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php?<? echo SID ?>";
</SCRIPT>
<?
}
else
{
echo 'Password incorrecto
<br>
<a href="formulario_login.php?">Login</a> ';
}
}
  #8 (permalink)  
Antiguo 28/01/2008, 15:35
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 12 años
Puntos: 3
Re: problema con login a la BD

Estas comparando minusculas y mayusculas??

Si no quien sabe te dejo un ejemplo..

http://www.forosdelweb.com/f18/algoritmo-md5-155419/

SALU2..!
__________________
Somos lo que nosotros queremos ni mas ni menos..
No hay dia mas perdido que aquel en que no hemos reido..
La vida es tal y como debe ser...
Nadie vivira por ti...
  #9 (permalink)  
Antiguo 29/01/2008, 19:20
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 14 años, 10 meses
Puntos: 3
Re: problema con login a la BD

Cita:
Iniciado por agressor Ver Mensaje
Estas comparando minusculas y mayusculas??

Si no quien sabe te dejo un ejemplo..

http://www.forosdelweb.com/f18/algoritmo-md5-155419/

SALU2..!
ya esta solucionado muchas gracias me fue de mucha ayuda el link que me mandaste haciendo el truquito de preguntar si son iguales la pass de la BD con la pass que le envio ese de


if pass2 = md5(pass1) con eso me di cuenta que el problema venia de la BD
resulta que la sintax estaba bien armada pues cuando me retorno vi que la pass encriptada de la BD tenia menos caracteres que la pass md5 que le mandaba, cuando fui a la BD me di cuenta que el campo lo tenia en valor 16 porque me dije bueno un usuario no pondra mas de 16 caracteres y resulta que por menos caracteres que sea al encriptarlar con el md5 esto lo ponia con 32 caracteres por eso siempre me daba password incorrecto porque al tener el campo de password en longitud 16 relamente le llegaba longitud 32 caracteres , asi que cuando puse el campo en valores 32 o mas hay ya se hacia la compracion de las dos password correctamente

saludos y muchas gracias
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:07.