Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   encriptar con md5 (https://www.clubdelphi.com/foros/showthread.php?t=82127)

ebanibaldo 30-01-2013 05:39:54

encriptar con md5
 
Hola amigos del foro...!!! estoy relizando un sistema y en este tengo que agregar usuarios y estos son guardados en una base de datos.. pero estos usuarios tambien tienen que iniciar una sesion, entonces tengo para ellos un nombre de usuario y una contraseña.

lo que quiero hacer es encriptar la contraseña con md5, es decir que se almacene en la base de datos ya encriptada, supuestamente lo tengo asi:

Código PHP:


<?php
include('conexion/conexion.php');

$idu=$_POST['idu'];
$usuario=$_POST['user'];
$pass1=$_POST['psw'];
$nombre=$_POST['nombre'];
$p_apellido=$_POST['p_apellido'];
$s_apellido=$_POST['s_apellido'];
$email=$_POST['email'];
$activo=$_POST['activo'];
$idt=$_POST['idt'];

$passmd5('$pass1');

$sql=mysql_query("insert into usuario (idu,user,psw,nombre,p_apellido,s_apellido,email,activo,idt)values
('
$idu','$usuario','$pass','$nombre','$p_apellido','$s_apellido','$email','$activo','$idt')",$conexion);
if(!
$sql){
die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
}
          else{                
               
header("Location:consulta3.php?msg= Usuario agregado correctamente con la contrasena: $pass");
exit;
}
mysql_close($conexion);
?>

y para iniciar sesion tengo esto en donde tambien encripto la contraseña que se pone en el formulario que el codigo es:

Código PHP:

<?php
include('conexion/conexion.php');
$user=$_POST['user'];
//$psw1=mysql_escape_string($_POST['psw']);
$psw1=$_POST['psw'];
$psw md5($psw1);
$sql="select*from usuario where user='$user' and psw like '$psw'";
$consulta=mysql_query($sql)or die("error de consulta");
$filas=mysql_num_rows($consulta);
if(
$filas==0)
{
header("Location:login.php?msg= Usuario o password no valida");
exit;
}
if(
$filas==1)
{
$nombre=mysql_result($consulta,0,'nombre');
$tipo=mysql_result($consulta,0,'idt');
$activo=mysql_result($consulta,0,'activo');
$idu=mysql_result($consulta,0,'idu');
}
if(
$activo=='no')
{
header("Location:login.php?msg= Usuario no activo");
exit;
}
else
{
header("Location:cookie.php?idu=$idu&idt=$tipo");
exit;
}
?>

el problema que tengo es que no puedo accedes xq la contraseña que se guarda en la base de datos no es la misma que la que se encripta en el formulario..

si alguien me puede ayudar con esto se los agradeceria

Gracias por tomarte el tiempo en leer este mensaje y gracias por sus respuestas :)

WkaymQ48 30-01-2013 08:14:56

Revisa esta linea :)
Código PHP:

$passmd5('$pass1'); 


Casimiro Notevi 30-01-2013 09:54:17

De todas formas, md5 no "encripta" nada, o sea, que no está creado para "encriptar".

movorack 30-01-2013 14:51:39

Coincido con Wkay...

Código PHP:

$passmd5('$pass1'); 

En la parte del código donde almacenas el hash en la DB estás calculando a "$pass" (b148e7f41fdc3be4b14e8d17e068bbad) y no al valor de $pass.

En cambio en la validación del login si estás calculando el hash a $pass si la contraseña fuera 123456 el hash sería e10adc3949ba59abbe56e057f20f883e y nunca validaría contra el almacenado para ese usuario.

duilioisola 30-01-2013 15:43:59

Según leí en algún lugar la forma correcta de hacerlo es la siguiente:

Tabla
USUARIO (usuario, hash_md5, otros_campos)

Crear un usuario:
  1. Pides nombre de usuario
  2. Pides contraseña
  3. Calculas md5(nombre_de_usuario + contraseña)
  4. Guardas el resultado en la base de datos
Login:
  1. Pides nombre de usuario
  2. Pides contraseña
  3. Calculas md5(nombre_de_usuario + contraseña)
  4. Comparas el resultado con lo que tengas en la base de datos

mamcx 30-01-2013 17:32:11

Cita:

Empezado por Casimiro Notevi (Mensaje 454228)
De todas formas, md5 no "encripta" nada, o sea, que no está creado para "encriptar".

Reiterando lo que dice Casimiro. No solo MD5 no es para encriptar claves, es ESTUPIDO usar md5 ahora. Es superfacil "desencriptar" lo que pongas ahi. Osea, es como si no hicieras nada de nada.


NO LO HAGAS ASI.

Mira la respuesta y enlaces que puse en http://clubdelphi.com/foros/showpost...42&postcount=3

ebanibaldo 30-01-2013 19:17:42

gracias a todos por sus respuestas... y si estaba casi todo bien ecepto en la linea que me comentaron que es esta:

Código PHP:

$pass=md5('$pass1'); 

donde deve si las comillas simples de estar de esta forma:
Código PHP:

$passmd5($pass1); 

Una vez mas veo que es muy importante fijarse en la sintaxis, ya que hasta por una coma no sirve nada jejejeje..
saludos ...
</span></span>


La franja horaria es GMT +2. Ahora son las 08:21:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi