Foros del Web » Programando para Internet » PHP »

Ingreso a mi cuenta con un pass $clave= md5($clave);

Estas en el tema de Ingreso a mi cuenta con un pass $clave= md5($clave); en el foro de PHP en Foros del Web. Hola a todos Tengo un problemilla tengo una web de ingreso de usuarios con contraseña (md5) hasta ahi todo bien. Pero mi problema es cuando ...
  #1 (permalink)  
Antiguo 28/11/2005, 15:08
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Exclamación Ingreso a mi cuenta con un pass $clave= md5($clave);

Hola a todos Tengo un problemilla

tengo una web de ingreso de usuarios con contraseña (md5) hasta ahi todo bien.

Pero mi problema es cuando un usuario quiere entrar a una seccion de la web (solo usuarios registrados) con la contraseña con que se registro si esta cambiada por el MD5, Ahora como le hago para que ese usuario no tenga problemas con el password mal ingresado...

Haber amigos si me dan una ayuda porque toy
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #2 (permalink)  
Antiguo 28/11/2005, 15:19
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Exclamación No entiendo...

Cita:
Iniciado por helthon
Ahora como le hago para que ese usuario no tenga problemas con el password mal ingresado...
No entiendo bien tu pregunta... Un password mal ingresado siempre va a dar problemas... pues ES INVÁLIDO
  #3 (permalink)  
Antiguo 28/11/2005, 15:24
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
me refiero a lo siguiente :

Primer Usuario = Juan
Clave = 123456

Pero cuando se guardar figura como " a4d7p4s "

Pero eso no lo sabe usuario, entonces cuando ingresa a la seccion coloca su usuario clave de acceso (originalmente ingresado por el mismo 123456) y no podra logearser por problemas de password que no son =les

No se si me dejo entener
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #4 (permalink)  
Antiguo 28/11/2005, 15:37
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Mensaje Creo que ya te entendí...

Lo que tienes que hacer es comparar el hash MD5 de la contraseña válida con el hash MD5 de la contraseña que el usuario ingresa, mas no con la contraseña misma..

Si lo haces del lado-del-servidor puedes usar la función 'md5()' de PHP, si lo haces del lado-del-cliente, puedes usar este script (JavaScript) para encriptar con MD5: http://pajhome.org.uk/crypt/md5/
  #5 (permalink)  
Antiguo 28/11/2005, 15:47
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
upss

Upss.. no logre entenderte
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #6 (permalink)  
Antiguo 28/11/2005, 15:56
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Cómo estás encriptando las contraseñas?
  #7 (permalink)  
Antiguo 28/11/2005, 15:58
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
En tu ejemplo, lo que tenés que comparar es
md5('123456') == "a4d7p4s"

la idea es guardar la pass encriptada y encriptar de la misma forma la que pone
  #8 (permalink)  
Antiguo 28/11/2005, 16:02
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Este es

Este es mi codigo de la forma como lo guardo :

Código PHP:

$nombre
$_POST['nombre'];
$usuario$_POST['usuario'];
$clave$_POST['clave'];
$email$_POST['email'];
$clavemd5($clave); //para tener una clave mas segura

// Grabamos el mensaje en la base. 
$con mysql_query("select id from usuarioshc  where usuario='$usuario' or email='$email'") ; 
if(
mysql_num_rows($con) != 0

    echo 
"Este usuario ya existe en la base de datos o ya hay un usuario con este email. Haz click <a href=\"javascript:history.back()\">aquí</a> para regresar." //si ya existe el usuario... 
}else { 
$sql 'INSERT INTO usuarioshc (nombre, usuario, clave, email)';
$sql.= "values ('$nombre','$usuario','$clave','$email')";
$rs mysql_query($sql$dbh) or die("Error al grabar un mensaje: ".mysql_error); 
$id  mysql_insert_id($dbh); 
//header('location: index.php');
echo 'Ya estas registrado en el sistema';

__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #9 (permalink)  
Antiguo 28/11/2005, 16:11
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Justo como dice Seppo, encriptas la contraseña (primero), y después la comparas con el MD5..
  #10 (permalink)  
Antiguo 28/11/2005, 16:46
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Osea que debo e hacer algo asi?
:

Código PHP:

//Primero
$usuario=$_POST["usuario"]; 
$clave=$_POST["claveac"]; 
$clavemd5($clave);

 
$sql="SELECT * FROM usuarioshc WHERE (usuario ='$usuario') AND (clave =md5('$clave'))"
//o asi
 
$sql="SELECT * FROM usuarioshc WHERE (usuario ='$usuario') AND (clave ='$clave')"
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #11 (permalink)  
Antiguo 28/11/2005, 16:55
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
La segunda. En $clave ya guardás la clave encriptada que tenés q comparar con la almacenada.
  #12 (permalink)  
Antiguo 28/11/2005, 17:00
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Hola Helthon!

Porque tienes 2 consultas almacenadas en la misma variable?

La segunda consulta es la que tienes correcta de acuerdo a tu código, pero para eso tienes que tener las claves encriptadas en la base de datos para poder comparalas con la clave posteriormente encriptada que escribio el usuario al logearse.

Código PHP:
$sql "SELECT * FROM usuarioshc WHERE usuario ='$usuario' AND clave = '$clave' "
Suerte!
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #13 (permalink)  
Antiguo 28/11/2005, 17:12
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
de a pocos

Gracias por sus respuesta
Estoy entiendo de apocos Pero para entenderles mejor es asi como funciona :

Si yo me logeo con un usuario (pepe) y un pass (7412) y cuando se guardo se encripto a (a35114s) (como ejemplo)

En mi consulta de B.D. debo de decir k el pass sea = al pass almacenada encriptada.

AHora mi duda es si yo como usuario pongo mi clave 7412 (que es la que me registre), como saber k eso es igual a "a35114s"

YO tengo este codigo :
Código PHP:
<?
require_once('conexion/conectar.php');

$usuario=$_POST["usuario"]; 
$clave=$_POST["claveac"]; 
$clavemd5($clave);

if(!
$usuario OR !$clave){ 

echo
' Debe de Ingresar Datos';
   
   }else{ 
   
   
$sql "SELECT * FROM usuarioshc WHERE usuario ='$usuario' AND clave = '$clave' ";
  
$datos mysql_query($sql); 
     
$rs=mysql_fetch_array($datos); 
     if (!
mysql_num_rows($datos)){ 
     
echo 
'El nombre de usuario ingresado o la clave son incorrectas';
    }else{ 
    
session_start(); 
$_SESSION["id_usuario"]=$rs["id"]; 
header('location: admin/index.php');
    } 
}
?>
Hi jahepi las dos consultas la puse como referiancia para que me dijeran cual de las dos es la k vale

Haber si es asi esto .....
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #14 (permalink)  
Antiguo 28/11/2005, 17:37
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Mensaje

Lo que pones está bien, si lo que quieres es VER cual es la codificación de la contraseña. sólo imprimes la expresión md5($clave)

Código PHP:
<? 
print (md5($clave));
?>
  #15 (permalink)  
Antiguo 28/11/2005, 17:54
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Pero = me sigue saliendo k no puedo ingresar por clave incorrecta

MI usuario es peru y su password es peru

En la Base de datos se ve asi : 32e841

Cuando ingreso mi usuario y mi password y hago el print que me indicas me sale esto :
8a4f26eb68906db8760fd56a4b892e22

aun no logro poder ingresar correctamente
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #16 (permalink)  
Antiguo 29/11/2005, 02:12
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
En la Base de datos se ve asi : 32e841
... ¿es textual lo que dices?; El algoritmo MD5() te va a regresar una cadena de carácteres de igual longitud sea la entrada que sea. Simplemente si encriptaste al guardar no puedes tener solo "32e841" sino que deberías tener una cadena con 32 carácteres (como la segunda que muestras). Pregunta: ¿el campo de tu BD tiene espacio para esos 32 carácteres??, ¿será que no y solo guardaste una parte?, ¿ó solo era "ilustrativo" el caso?; entonces no fue conveniente .

... no hay complicación, pasa el dato recibido por la función MD5() y comparalo con el guardado... el resultado de la función debe ser el mismo para una misma entrada por lo que la comparación es directa.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #17 (permalink)  
Antiguo 29/11/2005, 08:22
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Exclamación Hola jam1138

Hi jam1138

MI campo clave es de 6 caracteres. y pues si cuando guarde mi clave " Peru " se genero "32e841". esto es por lo que esta encriptada.

Aun no entiendo esto :
Cita:
... no hay complicación, pasa el dato recibido por la función MD5() y comparalo con el guardado... el resultado de la función debe ser el mismo para una misma entrada por lo que la comparación es directa.
Si yo deseo ingresar al sistema me logeo, ingreso mi usuario y clave (o password) "peru" creo que si esta en MD5 me generara otra cadena y como poder compararlo?
la idea es que solo ingrese una vez nada mas y puede entrar bien...

Sorry pero aun no logro entender del todo el MD5.. cuando lo guardo si pero para ingresar no
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #18 (permalink)  
Antiguo 29/11/2005, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
MI campo clave es de 6 caracteres. y pues si cuando guarde mi clave " Peru " se genero "32e841". esto es por lo que esta encriptada.
Si tu guardas tus contraseñas encriptadas con MD5() . .como este generar un string (cadena) de 32 caracteres .. minimo tendrá que ser un campo tipo CHAR(32) (no hace falta que sea VARCHAR . pues no es "variable" siempre son 32 caracteres alfanuméricos lo que genera un MD5() de una cadena dada).

Todo este sistema se trata de que tu al codificar tu contraseña en MD5() .. así la guardas en tu BD (8ads9f879asdf879dfsd987) .. cuando tu usuario hace "login" en tu sistema . tu le aplicas MD5() a lo que ingrese tu usuario (obteniendo 8ads9f879asdf879dfsd987 o similar) y eso es lo que usas para hacer tu consulta SQL a tu BD ..

Código PHP:
$sql="SELECT * FROM usuarios WHERE usuario='".$_POST['usaurio']."' AND password='".md5($_POST['password'])."'"
El caso es que el "hash" MD5() genera siempre lo mismo de una misma cadena origen .. Por eso se trata de que en tus Basde de datos guardes ese "MD5()" (cadena) generada y cuando deseas "validar" si el usuario está usando la misma password que usó para el registro, tu vuelvese a realizar el mismo proceso y lo comparas con lo que en su momento de registro del usuario lo generastes sabiendo que -siempre- dará lo mismo de la misma cadena origen.

Por supuesto .. si tu guardas sólo "6" caracteres de los 32 que arroja pasar un MD5() a una cadena cualquiera (string) .. esa "comparación" en tu consulta SQL -nunca- coincidirá. Por eso, lo primero que tienes que hacer es aumentar el tamaño de ese campo de contraseña que usas a 32.

Un saludo,

Última edición por Cluster; 29/11/2005 a las 09:07
  #19 (permalink)  
Antiguo 29/11/2005, 18:08
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 12 años, 6 meses
Puntos: 7
Gracias

Hola Cluster

Ahora si ya todo esta claro mi error era por lo que tenia en varchar(6), hice un print a mi : print (md5($clave)); y si era lo mismo que ingresaba y guardaba.

Base Datos : 82d324544529b20efede9ec34bcb7522
Ingreso : 82d324544529b20efede9ec34bcb7522

Gracias por la explicacion y la pasciencia a todos los que me han ayudado dreglad, Seppo, jahepi, jam1138, Cluster

__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
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 02:22.