Foros del Web » Programando para Internet » PHP »

problema al actualizar usuario con md5

Estas en el tema de problema al actualizar usuario con md5 en el foro de PHP en Foros del Web. A ver tengo el siguiente problema, en mi web me funciona perfectamente el registro y el log in de usuarios, usando contraseñas encriptadas con MD5, ...
  #1 (permalink)  
Antiguo 22/10/2010, 12:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 2
problema al actualizar usuario con md5

A ver tengo el siguiente problema, en mi web me funciona perfectamente el registro y el log in de usuarios, usando contraseñas encriptadas con MD5, etc etc, el problema me surje cuando quiero actualizar la contraseña (El problema no es la sentencia sql)

Tengo un formulario para actualizar la contraseña en el que pido:

Nombre de usuario:
Contraseña Actual:
Nueva contraseña:
Repite contraseña:

Si no compruebo que la contraseña actual conicide con la de la base de datos, no tengo ningún problema, la contraseña se actualiza (encriptada con md5).
el problema viene cuando hago la comprobación si

la contraseña actual encriptada con md5, es igual a la de la base de datos (encriptada).

Imprimiendo los datos veo lo siguiente:

Contraseña en la BD: 75e51ef7513fb24dd53fca2d5d03f5f7 (hola)

al escribir hola en el campo: Contraseña actual y encriptarla con MD5 el resultado es el siguiente:

4d186321c1a7f0f354b297e8914ab240

2 cosas totalmente distintas, obviamente la comprobación no tiene éxito.

lo que no entiendo porque pasa esto, si cuando hago el log in de usuarios hago exactamente la misma comprobación y no tengo ningun problema.

La contraseña la escribo perfectamente, he probado 500 contraseñas distintas, tanto mayusculas como minusculas, y imprimiendo datos me imprime 2 cosas totalmente distintas.

Si alguno sabe porque me esta pasando esto, me haría un favor.
  #2 (permalink)  
Antiguo 22/10/2010, 12:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al actualizar usuario con md5

sería bueno saber que código empleas, eso de adivinar no se da mucho por este foro... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/10/2010, 13:00
 
Fecha de Ingreso: octubre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: problema al actualizar usuario con md5

Código PHP:
Ver original
  1. if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "actualizar")) {
  2.     $pw=md5($_POST['cambiar_pw']);
  3.     if($pw == row_cuenta_usuario['Password']){
  4.   $updateSQL = sprintf("UPDATE usuarios SET Password='%s' WHERE NombreUsuario=%s",
  5.                        md5(GetSQLValueString($_POST['nueva_pw'], "text")),
  6.                        GetSQLValueString($_POST['cambiar_usuario'], "text"));
  7.  
  8.   mysql_select_db($database_Marcos, $Marcos);
  9.   $Result1 = mysql_query($updateSQL, $Marcos) or die(mysql_error());
  10.     }
  11. }


El código basicamente me lo genera el DW,

en row_cuenta_usuario['Password'], esta la contraseña de la sesion actual, que viene siendo "hola" en MD5

75e51ef7513fb24dd53fca2d5d03f5f7

en $_POST['cambiar_pw']; contiene la palabra "hola" (si lo imprimo), lo unico que estoy haciendo es encriptarla, estoy empezando con php, pero creo que la sentencia if funciona igual que en C asi que diría que esta bien.

el tema es que en

$pw=md5($_POST['cambiar_pw']); me genera un codigo distinto (4d186321c1a7f0f354b297e8914ab240 ) que el que tengo almacenado en la BD, y siendo $_POST['cambiar_pw'] = "hola", y la contraseña en la base de datos, "hola" encriptada, carece de sentido.

Última edición por marcosc90; 22/10/2010 a las 13:05
  #4 (permalink)  
Antiguo 22/10/2010, 13:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al actualizar usuario con md5

sería bueno que realizaras esto al recibir tu formulario:
Código PHP:
print_r($row);
print_r($_POST); 
¿que muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 22/10/2010, 13:17
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: problema al actualizar usuario con md5

ME tiene intrigado esta duda, vamos marcosc90, responde!!! jejejeje
  #6 (permalink)  
Antiguo 22/10/2010, 13:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: problema al actualizar usuario con md5

Cita:
Iniciado por pateketrueke Ver Mensaje
sería bueno que realizaras esto al recibir tu formulario:
Código PHP:
print_r($row);
print_r($_POST); 
¿que muestra?

la primera sentencia me muestra lo siguiente:

Array ( [Nombre] => Marcos [Apellidos] => Apellido [NombreUsuario] => marcosc90 [Password] =>75e51ef7513fb24dd53fca2d5d03f5f7 [Email] => [email protected] [Fecha_registro] => 2010-10-22 20:07:24 )

La segunda:

Array ( [cambiar_usuario] => marcosc90 [cambiar_pw] => hola [nueva_pw] => chau [cambiar] => Cambiar [MM_update] => actualizar )


Por cierto aprovecho para decir que en el codigo el if es if($pw == $row_cuenta_usuario['Password']){ (FALTABA "$" en row_cuenta en el codigo que pegue aqui, en el mio lo tengo bien, de todas formas es irrelevante, ya que hola en md5 me sale distinto en la base de datos, con respecto al que sale en la impresion,
  #7 (permalink)  
Antiguo 22/10/2010, 13:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problema al actualizar usuario con md5

curiosamente:
Código PHP:
echo md5('hola'); 
da como resultado 4d186321c1a7f0f354b297e8914ab240 y no se parece en nada a lo que tienes en la BD...

seguramente cometiste un error al ingresar la primer contraseña, y por alguna razón no estas escribiendo la que si es correcta!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 22/10/2010, 13:48
 
Fecha de Ingreso: octubre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: problema al actualizar usuario con md5

pero entonces el error lo comete al logear tambien?, porque tanto al registrarme como al logear la contraseña que me genera md5 es distinto

Os pego el código de registro a ver si veis algun fallo.

Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
  2.     $PW = GetSQLValueString($_POST['password'], "text");
  3.     $MD5_PW = MD5($PW);
  4.     $insertSQL = sprintf("INSERT INTO usuarios (Nombre, Apellidos, NombreUsuario,Password, Email) VALUES (%s, %s, %s, '%s', %s)",
  5.                        GetSQLValueString($_POST['nombre'], "text"),
  6.                        GetSQLValueString($_POST['apellido'], "text"),
  7.                        GetSQLValueString($_POST['nombreUsuario'], "text"),
  8.                        $MD5_PW,
  9.                        GetSQLValueString($_POST['email'], "text"));
  10.  
  11.     mysql_select_db($database_Marcos, $Marcos);
  12.     $Result1 = mysql_query($insertSQL, $Marcos) or die(mysql_error());
  13. }

Vale ya encontre el problema, el tema que puse el codigo de arriba en lugar de

Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
  2.     $insertSQL = sprintf("INSERT INTO usuarios (Nombre, Apellidos, NombreUsuario,Password, Email) VALUES (%s, %s, %s, '%s', %s)",
  3.                        GetSQLValueString($_POST['nombre'], "text"),
  4.                        GetSQLValueString($_POST['apellido'], "text"),
  5.                        GetSQLValueString($_POST['nombreUsuario'], "text"),
  6.                        md5(GetSQLValueString($_POST['password'], "password")),
  7.                        GetSQLValueString($_POST['email'], "text"));
  8.  
  9.     mysql_select_db($database_Marcos, $Marcos);
  10.     $Result1 = mysql_query($insertSQL, $Marcos) or die(mysql_error());
  11. }

Es que me daba fallo el dreamweaver, no se muy bien porque, recien hace 4 dias que empece a programa webs, tanto html como php y bueno, pero con el último código me guarda hola como 4d186321c1a7f0f354b297e8914ab240 como debe ser, por lo tanto ya esta solucionado aunque no se muy bien porque

Gracias por las respuestas.
  #9 (permalink)  
Antiguo 22/10/2010, 14:07
 
Fecha de Ingreso: octubre-2010
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: problema al actualizar usuario con md5

Para los que les interese saber el problema el FALLO se encuentra en esta linea

Código PHP:
Ver original
  1. GetSQLValueString($_POST['password'], "text");

Dreamweaver (CS4 al menos) te genera esta línea la cual es incorrecta ya que el campo de password no es "text", debe ser "password", y esto hace que la contraseña encriptada sea distinta de lo que debería ser.

Código PHP:
Ver original
  1. GetSQLValueString($_POST['password'], "password");


Un saludo.
  #10 (permalink)  
Antiguo 22/10/2010, 21:16
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Respuesta: problema al actualizar usuario con md5

buenas!!

tal vez mi respuesta se muuuy simple pero dice un refran que "cuando todos las respuestas cientificas han sido descartadas, la respuesta mas simple es la correcta"

¿estas tomando en cuenta que pudiera ser un problema de minusculas y mayusculas???

Código PHP:
<?
  $var1
="hola";
  
$var2="HOLA";
  
$var3=md5($var1);
  
$var4=md5($var2);
  echo 
$var3;
  echo 
"<br>".$var4;
?>
el resultado es esto:

4d186321c1a7f0f354b297e8914ab240
c6f00988430dbc8e83a7bc7ab5256346

como veras la codificacion es diferente..... aun cuando es la misma palabra

bueno... es una idea de por donde buscarle ;)

un saludo!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #11 (permalink)  
Antiguo 22/10/2010, 21:56
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: problema al actualizar usuario con md5

Si haz hecho esas pruebas por ti mismo, es mas que obvia la respuesta..
Si, es sensible a mayusculas/minusculas

Si haces esto;
Código PHP:
echo md5('hola').'<br>'.md5('HoLa'); 
Si dara un resultado diferente
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: usuarios
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:31.